0

下面显示的是我的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 个条目总是可以正常工作。但它不是按升序排列的。查询总是从第一行开始选择行而不进行排序(我知道限制只会从第一行开始)。ID在按升序排序 time_stamp 后,我需要从表 1 中获取。

问题:-我需要相对于 table1 中的 time_stamp 列按升序对表 1 进行排序。然后从中选择前 2 个条目。并从 table2 中找到它的电子邮件 ID

4

1 回答 1

3

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

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

或者

使用LEFT OUTER JOINORINNER 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
于 2013-09-10T06:42:30.217 回答