下面显示的是我的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
。
问题:-我需要根据表 1 中的 time_stamp 列按升序对表 1 进行排序。然后从中选择前 2 个条目。并从表 2 中找到它的电子邮件 ID
最佳答案
您正在为子查询添加 ORDER BY time_stamp ASC
。
为了获得排序的记录,您需要在 IN
子句之外添加 ORDER BY wid ASC
。
或
使用 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
关于mysql - 在合并选择查询中使用 order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18712185/