Mysql 使用自联接查询检索值
我想检索在父\u albumid上找不到albumid且父\u albumid为空的记录 例如:Mysql 使用自联接查询检索值,mysql,Mysql,我想检索在父\u albumid上找不到albumid且父\u albumid为空的记录 例如: albumid name parent_albumid ------------------------------------------------------ 145 sun NULL 146 fly 145 148 ok NULL 149
albumid name parent_albumid
------------------------------------------------------
145 sun NULL
146 fly 145
148 ok NULL
149 mama 148
150 test NULL
在上面的示例中,albumid 145和148位于父albumid中,因此没有。记录146和149有一个父相册ID,因此没有。。。。AlbumID150是左边的,结果集应该返回的
我可以尝试使用self-join查询,但这对我一点帮助都没有
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
)
这是另一个(我更喜欢第一个,它表明了更好的意图):
确切地说,你将如何分辨145和150之间的差别?它们的父ID都为
null
,那么是什么让145“ok”和150“bad”?150是ok,145是bad…你知道self Joni、inner join、outer join……。@JegsVala不,我不知道,这就是我在这里问的原因。。我是一个新手,你可以使用外部连接,因为如果你想得到匹配记录和所有其他具有空值的记录的结果。
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