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

标签 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

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

最佳答案

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

为了获得排序的记录,您需要在 IN 子句之外添加 ORDER BY wid ASC

使用 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

关于mysql - 在合并选择查询中使用 order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18712185/

相关文章:

mysql - 在phpmyadmin中从mysql命令行调用mysql存储过程

php - Drupal - 无法从 db_query 获得结果

php - GET 请求时为 "No data received"

mysql - 连接到 Node js 服务器时出现错误(angularjs、nodejs、mysql 连接)

sql - 将 NULL 值排序到表的末尾

javascript - 限制 jQuery select2 最大选择选项

c++ - Boost Enum 256 元素限制

SQL 服务器 : slow query with 3 "OR" condition and order by Id

sql - 我们可以在 SQL Server 中对 2 个以上的列执行排序吗

Laravel 5.1 eloquent 的 with() 方法中的使用限制