目标:根据子级的最新数据来查询5条父级数据。
1、首先:查询出所有符合的相关数据。
SELECT Q.id , Q.pid FROM Q LEFT JOIN P ON P.id=Q.pid WHERE P.XXOO=... AND Q.XXOO...;
2、其次:自链接查询。
#SELECT A.* FROM A LEFT JOIN B ON A.XXOO = B.XXOO AND A.id < B.id WHERE B.id IS NULL;
SELECT A.* FROM A LEFT JOIN B ON A.XXOO = B.XXOO AND A.id < B.id WHERE B.id IS NULL ORDER BY A.id DESC LIMIT 5;
3、最后:组装sql查询。
SELECT
A.*
FROM
(SELECT
Q.id ,
Q.pid
FROM
Q
LEFT JOIN
P
ON P.id=Q.pid
WHERE
P.XXOO=...
AND Q.XXOO...) AS A
LEFT JOIN
(
SELECT
Q.id ,
Q.pid
FROM
Q
LEFT JOIN
P
ON P.id=Q.pid
WHERE
P.XXOO=...
AND Q.XXOO...
) AS B
ON A.XXOO = B.XXOO
AND A.id < B.id
WHERE
B.id IS NULL
ORDER BY
A.id DESC LIMIT 5;
本文详细介绍了一种SQL查询技巧,旨在根据子级的最新数据,逆向查询其父级的前五条相关记录。通过三步操作:首先,筛选所有符合条件的数据;其次,进行自链接查询以找到父级记录;最后,组装SQL语句并限制结果数量,确保查询高效准确。
990

被折叠的 条评论
为什么被折叠?



