sql—如何使用mysql选择不在列表中的值

gojuced7  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(432)

当前我想要一些不在一个字段中的记录,即,我想要选择位置中不在直接父字段中的记录。
这是我的table结构

我希望结果是
1.1.1 , 1.2.1 , 1.3.1
我试着使用(不在)语法,但它抛出错误。任何帮助都是值得赞赏的

rqdpfwrv

rqdpfwrv1#

如果我理解正确,你需要有2级以上的记录。

SELECT T1.* FROM 
yourTable T1
INNER JOIN yourTable T2 on T2.immediate_parent=T1.position
INNER JOIN yourTable T3 on T3.immediate_parent=T2.position

在您的特定示例中,也可以通过检查有多少个点来完成;-)

nhn9ugyo

nhn9ugyo2#

看起来您想要的是位置不是其他记录的直接父级的所有记录。我们可以尝试使用自反联接:

SELECT t1.*
FROM yourTable t1
LEFT JOIN yourTable t2
    ON t1.position = t2.immediate_parent
WHERE t2.position IS NULL;

另一种表达方式是使用 EXISTS 条款:

SELECT t1.*
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.immediate_parent = t1.position);
0qx6xfy6

0qx6xfy63#

也许你可以试试这个:

SELECT *
FROM tableA A
WHERE NOT EXISTS (
        SELECT *
        FROM tableA AA
        WHERE A.position = AA.immediate_parent
        )

相关问题