与ORDER BY结合使用

时间:2011-09-13 07:35:19

标签: mysql join

我想在表格中找到最早的日期。如何将其添加到连接语句中:

SELECT date FROM table1 WHERE orderno = 222 ORDER BY date LIMIT 1

Orderno 222可以在table1中有1- *多行,这就是我使用LIMIT 1的原因

我有这些表的表:

订单 订单行 ProductionDate

订单可以有1- * ProductionDates,所以当我加入ProductionDate时,我想找到最早的日期。

所以我对sql语句的猜测是这样的:

SELECT * FROM Order
LEFT JOIN (
IN SELECT date FROM ProductionDate ORDER BY date ASC LIMIT 1)

但这不起作用。我想知道我应该改变什么才能让它发挥作用?

2 个答案:

答案 0 :(得分:2)

我不确定MySQL是否支持LIMIT在派生表中,但如果确实如此,语法应为:

SELECT ord.*
FROM `Order` ord
  LEFT JOIN (SELECT date FROM ProductionDate ORDER BY date ASC LIMIT 1) t
       ON t.date = ord.date

请注意,order是保留字,因此您需要正确引用它。要么使用MySQL可怕的反引号(见上文),要么 - 如果您将服务器配置为标准兼容 - 使用这样的双引号:"order"

答案 1 :(得分:0)

SELECT `date` 
FROM `table1` 
INNER JOIN `table1`.`date` ON `table2`.`date`
ORDER BY date ASC LIMIT 1

这是你的意思吗?

相关问题