我正面临一个算法问题。我有一张桌子,这是我没有建的历史表。这张桌子有这样的结构:
id -文件-注释日期-注释-作者
1-1- 20180901 -嗨-2
2-1- 20170901 -你好-3
3-2--
4-2- 20160504 -嗨大家好-4
每个文件都可以有多个注释,但我只想在每一个文件中选择一行,并记录最近的注释。
我试了一组不同的组合,有,在哪里,最大.但没能得到预期的结果。
我想这只是个骗局,但我不.
欢迎任何帮助!
谢谢文森特
发布于 2018-11-08 15:10:39
您可以通过排除连接来完成这一任务:
SELECT c1.id, c1.file, c1.comment_date, c1.comment, c1.author
FROM comments c1
LEFT JOIN comments c2
ON c2.file = c1.file AND c2.id > c1.id
WHERE c2.id IS NULL我使用id列来确定每个文件最近的行,而不是comment_date列,因为每个文件可能有重复comment_date值的行。
如果必须使用comment_date,则如果存在重复日期,则可以使用返回到id的查询:
SELECT c1.id, c1.file, c1.comment_date, c1.comment, c1.author
FROM comments c1
LEFT JOIN comments c2
ON c2.file = c1.file AND c2.comment_date > c1.comment_date AND c2.id > c1.id
WHERE c2.id IS NULLhttps://stackoverflow.com/questions/53209788
复制相似问题