我想检索在parent_albumid上找不到albumid和parent_albumid为NULL的记录
的例子:
albumid name parent_albumid
------------------------------------------------------
145 sun NULL
146 fly 145
148 ok NULL
149 mama 148
150 test NULL
在上面的例子中,albumid 145和148都在parent_albumid中,所以有out。记录146和149有一个parent_albumid,所以有....albumid150是剩下的一个,它应该由结果集
返回。我可以尝试使用自连接查询,但这对我没有任何帮助!
SELECT a.albumid, a.name, a.parent_albumid
FROM album AS a
JOIN album AS b on a.albumid = b.parent_albumid
我如何创建我的自连接查询?
有很多方法可以做到这一点,但这里有一个:
SELECT a.albumid
FROM album a
WHERE
parent_albumid IS NULL
AND NOT EXISTS (
SELECT 1
FROM album
WHERE parent_albumid = a.albumid
)
这是另一个(我更喜欢第一个,因为它更能表明意图):
SELECT a1.albumid
FROM album a1
LEFT JOIN album a2
ON a2.parent_albumid = a1.albumid
WHERE a1.parent_albumid IS NULL AND a2.albumid IS NULL