我从这个帖子Retrieving the last record in each group中偷了这个查询:
SELECT m1.*
FROM messages m1 LEFT JOIN messages m2
ON (m1.name = m2.name AND m1.id < m2.id)
WHERE m2.id IS NULL;
有人可以帮助我了解AND m1.id < m2.id
如何返回正确的结果/我认为AND m1.id > m2.id
不会返回正确的结果。
我有点想知道技术上id应该更大。
答案 0 :(得分:1)
鉴于WHERE m2.id IS NULL
,您正在寻找未加入的实例。
考虑以下id对:
m1_id m2_id
1 1
2 2
3 3
在没有m1.id < m2.id
条件的情况下使用WHERE
可以获得:
m1_id m2_id
1 2
1 3
2 3
3 NULL
NULL
这是您正在寻找的标准
WHERE
条款。