提问者:小点点

在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个结果。

我尝试做(从event ORDER BY DESC Limit3中选择E.Result)来代替e.Result,但e.Result不起作用。

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


共1个答案

匿名用户

首先,按降序排列顺序,并在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)

试试这个。