在合并的选择查询中使用order by

时间:2013-09-10 06:40:22

标签: mysql sql-order-by limit

下面显示的是我的mysql查询

SELECT mail FROM table2 WHERE wid IN
(SELECT DISTINCT Id FROM table1 
WHERE time_stamp>=DATE_SUB(NOW(),INTERVAL 10 MINUTE) AND status<>200 
ORDER BY time_stamp ASC)
LIMIT 2");

这会抓取2个条目总是正常工作。但它没有按升序排序。查询总是从第一行开始选择行而不按顺序执行(我知道限制将仅从第一行开始)。在按升序排序time_stamp之后,我需要从表1中获取ID

问题:-i需要相对于table1中的time_stamp列按升序对表1进行排序。然后从中选择前两个条目。并从table2

中查找其电子邮件ID

1 个答案:

答案 0 :(得分:3)

您正在为子查询添加ORDER BY time_stamp ASC

要获取订单记录,您需要在ORDER BY wid ASC子句之外添加IN

使用LEFT OUTER JOININNER JOIN获取根据timestamp排序的记录。

修改

SELECT
    mail
FROM
    table2
INNER JOIN
    table1 ON table2.wid = table1.id
WHERE
    table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE)
AND
    table1.status<>200
ORDER BY
    table1.time_stamp ASC
LIMIT 2