下面显示的是我的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答案 0 :(得分:3)
您正在为子查询添加ORDER BY time_stamp ASC
。
要获取订单记录,您需要在ORDER BY wid ASC
子句之外添加IN
。
或强>
使用LEFT OUTER JOIN
或INNER 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