如何使用MYSQL选择不在列表中的值

时间:2018-07-27 05:51:48

标签: mysql sql

目前,我希望某些字段中不存在的记录,即,我想选择直接上级中不存在的位置中的记录。

这是我的表结构

enter image description here

我希望结果为

  

1.1.1,1.2.1,1.3.1

我尝试使用(not in)语法bu会引发error。任何帮助都是

3 个答案:

答案 0 :(得分:2)

您似乎希望所有位置不是其他某些记录的直接父项的记录。我们可以尝试使用自我反联合:

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);

答案 1 :(得分:0)

也许您可以尝试以下方法:

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

答案 2 :(得分:0)

如果我对您的理解正确,则需要具有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

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