首页 文章

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

提问于
浏览
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个条目总是工作正常 . 但它没有按升序排序 . 查询总是从第一行开始选择行而不按顺序执行(我知道限制将仅从第一行开始) . 在按升序排序time_stamp之后,我需要从表1中获取 ID .

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

1 回答

  • 3

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

    要获得有序记录,您需要在 IN 子句之外添加 ORDER BY wid ASC .

    OR

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

    EDIT

    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
    

相关问题