我列出条目的评论,我允许用户编辑现有评论,并跟踪这些修订。
表格结构:
评论:id,摘要
修订:comment_id,revision_id,timestamp
revisions.comment_id = comments.id
revisions.revision_id =新评论的ID,进一步说明:当他们选择现有评论时,它会显示一个编辑表格,他们可以输入新评论并提交。它会将它作为新注释插入到注释表中,从该表中获取最后一个id并在revisions表中将其设置为revision_id。
我想在修订表上做一个select distinct(要将多个comment_id,revision_id检索到要在应用程序中使用的数组):
例如:
select distinct comment_id from revisions
但是可以根据最新评论(revisions.timestamp)选择合适的记录吗?
理论上:
从版本中选择不同的comment_id WHERE时间戳是最大的
修订表示例:
comment_id revision_id timestamp
2 12 20120222180000
2 13 20120222170000
5 18 20120222190000
5 19 20120222200000
在这个4行的例子中,我希望查询返回两行,
那是:
comment_id = 2,revision_id = 12时间戳= 20120222180000
和
comment_id = 5,revision_id = 19时间戳= 20120222200000
更新:这似乎可以解决问题,但如果有更好的方法,请告诉我
SELECT
distinct comment_id, max(timestamp)
FROM
revisions
GROUP BY
comment_id
更新:我还需要包含revision_id,上面的查询只包含comment_id和timestamp
这样做了:
SELECT
distinct a.comment_id as comment_id,
a.revision_id revision_id,
a.timestamp as timestamp
FROM
REVISIONS a
WHERE
a.timestamp = (
SELECT
max(b.timestamp)
FROM
revisions b
WHERE
b.comment_id = a.comment_id
)
答案 0 :(得分:0)
如果我理解正确,你只需按时间戳排序,然后取第一个结果。
SELECT comment_id FROM revisions ORDER BY timestamp DESC LIMIT 0,1
编辑:我想我现在明白了,你真正想要的,试试这个:
SELECT * FROM revisions GROUP BY comment_id ORDER BY timestamp DESC