希望能帮到你。我正在以下列格式将数据存储在 MySQL 数据库中:
ArticlePK ArticleId Status Title lastupdate
1 1 Draft Peter Pan 2013-06-14 07:24:05
2 1 Published Peter Pan 2013-06-15 08:00:05
3 1 Deleted Peter Pan 2013-06-20 11:30:12
4 2 Published Growth of the Soul 2013-06-14 07:24:05
我需要一个 SQL 查询:
- 返回状态为发布的所有行
- 除非后面一行(由 lastUpdate 列确定)具有相同的 ArticleId,状态为已删除。
因此,在下面的示例中,查询应该只返回 ArticlePK 为 4 的行。由于 ArticlePK 为 3 的行,不会返回 ArticlePK 2 的行。
我尝试了一些方法,但没有任何效果。我相信只需轻推一下就能帮助我解决问题,所以如果您有任何建议,我很乐意听取。
谢谢,
最佳答案
您可以使用 NOT EXISTS
SELECT articlepk, articleid, status, title, lastupdate
FROM tablename t1
WHERE status = 'Published'
AND NOT EXISTS (SELECT 1 FROM tablename t2
WHERE t1.articleid = t2.articleid
AND t2.status = 'Deleted'
AND t2.lastupdate > t1.lastupdate)
关于mysql - 根据其他行的条件选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127733/