我有两个表:ticket和ticketrules,我有这样一个查询:
SELECT * FROM (
SELECT * FROM ticketRules
ORDER BY
date DESC,
time DESC
) AS myTicketRules
GROUP BY ticketId
ORDER BY ticketId ASC
第一个 Order By
(子查询中的那个)按日期和时间对数据排序,这样最后一个ticketrule总是第一个。我把结果按 ticketId
所以每张票我只拿到最后一张票。现在我想按票证对结果排序,但如果这样做,第一个结果也会受到影响,票证不再有最后一个票证,而是id最低的票证,因为它是按票证id排序的。
如何在将可见记录分组后仅对其进行排序?
2条答案
按热度按时间dfuffjeb1#
不应使用没有聚合函数的group by,对于获取最后一个值,可以使用聚合函数作为
max( )
```select ticketId, max(date)
from ticketRules
grouo by ticketId
q8l4jmvw2#
您的查询有几个问题:
应该只有一个order by子句(应该放在外部查询中)
分组不按你想的做
如果您试图提取每个ticketid的完整最新记录(按ticketid排序),则可以使用相关子查询,如下所示: