mysql排序有序分组数据

waxmsbnn  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(390)

我有两个表: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排序的。
如何在将可见记录分组后仅对其进行排序?

dfuffjeb

dfuffjeb1#

不应使用没有聚合函数的group by,对于获取最后一个值,可以使用聚合函数作为 max( ) ```
select ticketId, max(date)
from ticketRules
grouo by ticketId

q8l4jmvw

q8l4jmvw2#

您的查询有几个问题:
应该只有一个order by子句(应该放在外部查询中)
分组不按你想的做
如果您试图提取每个ticketid的完整最新记录(按ticketid排序),则可以使用相关子查询,如下所示:

SELECT 
    t.*
FROM
    ticketrule t
WHERE
    t.date = (
        SELECT MAX(date)
        FROM ticketrule
        WHERE ticketId = t.ticketId 
    )
ORDER BY t.ticketId

相关问题