gpt4 book ai didi

mysql - 按一对多关系排序

转载 作者:行者123 更新时间:2023-11-29 02:34:39 25 4
gpt4 key购买 nike

我有 2 个表:

Message:
id: INT
created_at: DATETIME

Comment:
id: INT
message_id: INT
created_at: DATETIME

一条消息有很多评论

我想获取所有按最近事件排序的消息:

  • 如果MessageComments,那么最近的Commentcreated_at被用作消息 事件指示器
  • 如果Message没有Comments,它的created_at值就是事件指标

基本上,我想像经典电子邮件或私有(private)消息系统一样对其进行分类。

也许我可以 INNER JOIN 评论,但我认为没有必要为了排序而获取所有评论。

此外,我考虑过在 Message 中创建一个列来保存上次事件日期并在创建 Comment 时更新它,但我想看看是否你有更好的解决方案..

我正在使用 Doctrine,所以如果你有基于 Doctrine 的解决方案,我宁愿那样,

谢谢!

最佳答案

我会在 MySQL 中做的是这样的:

SELECT *
FROM Messages AS m
ORDER BY GREATEST(
m.created_at,
(SELECT MAX( c.created_at ) FROM Comment AS c WHERE c.message_id = m.id )
) DESC

关于mysql - 按一对多关系排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com