如何在mysql中选择上一次编辑的post版本?

2jcobegt  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(221)

这个问题在这里已经有答案了

sql仅选择列上具有最大值的行[重复](27个答案)
两年前关门了。
这是我的表格结构:

// posts
+----+-----------------------------+-----------+------------+
| id |            body             | edited_id | date_time  |
+----+-----------------------------+-----------+------------+
| 1  | post1                       | NULL      | 1464136759 |
| 2  | post2                       | NULL      | 1464136760 | 
| 3  | post2     edited            | 2         | 1464136761 | 
| 4  | post2     eduted again      | 2         | 1464136762 | 
+----+-----------------------------+-----------+------------+

如您所见,上表保留了帖子及其版本。目前我正在选择这样的帖子:

SELECT * FROM posts WHERE id IN (1,2) ORDER BY date_time ASC;

电流输出:

| 1  | a question                  | NULL      | 1464136759 |
| 2  | my answer                   | NULL      | 1464136760 |

预期产量:

| 1  | a question                  | NULL      | 1464136759 |
| 4  | my answer eduted again      | 2         | 1464136762 |

看到了吗?岗位 id = 2 有两个版本,我总是需要选择一个最大的(根据 date_time ). 我该怎么做?

qni6mghb

qni6mghb1#

如果不编辑行,则可以使用:

select p.*
from posts p
where (p.id in (1, 2) or p.edited_id in (1, 2)) and
      p.id = (select p2.id
              from posts p2
              where p.id in (p2.id, p2.edited_id)
              order by date_time desc
              limit 1
             );

相关问题