Mysql 使用自联接查询检索值

Mysql 使用自联接查询检索值,mysql,Mysql,我想检索在父\u albumid上找不到albumid且父\u albumid为空的记录 例如: albumid name parent_albumid ------------------------------------------------------ 145 sun NULL 146 fly 145 148 ok NULL 149

我想检索在父\u albumid上找不到albumid且父\u albumid为空的记录

例如:

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