【发布时间】:2017-09-01 23:11:17
【问题描述】:
在 mysql 中,我有两个表:Question 和 Commentary。这就是他们的样子:
问题:ID、标题
评论:QuestionId、Content、Created(日期字段)
QuestionId 是问题 ID 的外键。
所以我在问题和评论之间有 0 对多的关系。也就是说,一个问题可以有 0..n 条评论。
我想做的是显示所有问题以及最新的评论(如果有的话)(创建字段)。因此,如果没有评论,问题仍然必须显示,但评论的内容字段中为 null。
我相信我几乎可以在这个查询中使用它,除了它只检索有 cmets 的问题。如前所述,我也想要没有 cmets 的问题。
select
q.Id AS Id,
q.Title AS Title,
c.Content AS Content
from question AS q
left join commentary as c on c.QuestionId = q.Id
where
c.Created = (
select MAX(created)
from commentary
where questionid = q.Id
)
如何调整脚本?
【问题讨论】:
-
@Barmar:我认为您使用“复制按钮”有点快。我不相信这是您链接到的问题的重复。当我们花时间在 stackoverflow 上输入问题时,您至少可以在将问题标记为重复之前通读一遍!
-
我认为这是重复的。只需将
c.created = (...)从WHERE子句移动到ON子句,它应该可以工作。 -
另见this question。它展示了如何编写一个查询来获取每个问题的最新评论,您可以使用该查询离开联接。
-
@Barmar:但尽管解决方案可能相似,但问题仍然不是重复的。
-
@Barmar:但无论如何感谢您的帮助。
标签: mysql sql select join greatest-n-per-group