首页 > 解决方案 > 为 MySQL 中的列选择最近的 3 条记录

问题描述

这是我的 SQL 查询:

SELECT s.name,
       f.message,
       e.timestamp,
       e.result,
       o.details
FROM  event e
LEFT JOIN feed f ON e.id=f.id 
LEFT JOIN oper o ON o.id=e.id 
LEFT JOIN system s ON o.id=e.id 
WHERE (e.date = ’15-06-2020’)
AND e.oper_id IN (SELECT id from oper 
                               where state = ‘READY1’ or  state = ‘READY2’ or state = ‘READY2’
                               group by state
                               order by state)

现在我的 e.results 表中有 3 个以上的结果,但是我只想获取最近的 3 个结果(所以按时间戳排序)。所以我从 SQL 得到的最终结果应该只有最近的 3 个结果。

我尝试做(从事件 ORDER BY DESC LIMIT 3 中选择 e.result)代替 e.result,但它不起作用。

知道我怎么能做到这一点。我正在查询 MySQL。

标签: mysqlsortingsubquerylimit

解决方案


首先按降序排列,并在 order by 子句之后在 sql 中设置限制为 3。更改子查询中的列。

SELECT s.name,
   f.message,
   e.timestamp,
   e.result,
   o.details FROM event e
   LEFT JOIN feed f ON e.id=f.id 
LEFT JOIN oper o ON o.id=e.id 
LEFT JOIN system s ON o.id=e.id 
WHERE (e.date = ’15-06-2020’) AND
e.oper_id IN (SELECT id,state from oper 
   where state = ‘READY1’ or  state = ‘READY2’
   group by state order by state desc LIMIT 3)

尝试这个。


推荐阅读