2

基本上,我有一个带有评论的 MySQL 表,其中包含提交的 ID 和日期,我希望用户能够编辑这些评论。编辑评论时,我想在表中创建一个新条目,其 ID 与正在编辑的评论相同,但有一个新日期。

所以当我选择我的评论列表时,我想使用 SELECT MAX( DateSubmitted) ... Group By ID,但我也想计算为每个 ID 分组的数量,所以我知道评论被编辑了多少次。

我认为应该是这样的:

SELECT ID, COUNT(1) as "Number of edits"
FROM comments
GROUP BY ID;

合并:

SELECT ID, MAX(`DateSubmitted`), Comment
FROM comments
GROUP BY ID;
4

2 回答 2

4

如果您想获取最新的评论文本以及编辑和计数的日期:

SELECT a.ID, a. MaxDateSubmitted, a.NumComments, b.Comment
(SELECT ID, 
        MAX(`DateSubmitted`) as "MaxDateSubmitted", 
        COUNT('ID') as "NumComments"
FROM comments
GROUP BY ID) a
INNER JOIN comments b ON a.ID = b.ID and b.DateSubmitted = a.MaxDateSubmitted;

注意:这假设没有两个编辑具有完全相同的日期和时间(直到时间部分的精度)。但在这种情况下,我认为这是一个有效的假设。

如果您只想要最新的编辑日期和计数:

 SELECT ID, 
        MAX(`DateSubmitted`) as "MaxDateSubmitted", 
        COUNT('ID') as "NumComments"
 FROM comments
 GROUP BY ID
于 2013-02-16T01:33:52.680 回答
2
SELECT ID, COUNT(ID) as "Number of edits", MAX(`DateSubmitted`)
FROM comments
GROUP BY ID;
于 2013-02-16T01:32:34.830 回答