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

如何使用MYSQL选择不在列表中的值,mysql,sql,Mysql,Sql,目前,我希望一些记录不存在于一个字段中,即,我希望选择不存在于直接父字段中的位置的记录 这是我的桌子结构 我希望结果是一样的 1.1.1、1.2.1、1.3.1 我尝试使用(不在)语法,但它抛出错误。任何帮助都是可观的看起来您需要的是位置不是其他记录直接父级的所有记录。我们可以尝试使用自反联接: SELECT t1.* FROM yourTable t1 LEFT JOIN yourTable t2 ON t1.position = t2.immediate_parent WHERE

目前,我希望一些记录不存在于一个字段中,即,我希望选择不存在于直接父字段中的位置的记录

这是我的桌子结构

我希望结果是一样的

1.1.1、1.2.1、1.3.1


我尝试使用(不在)语法,但它抛出错误。任何帮助都是可观的

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

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

也许你可以试试这个:

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

如果我理解正确,您需要级别为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

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

显示什么错误?你能再解释一下吗?现在还不清楚你到底想做什么……你能更具体一点吗?换句话说,“叶”或“叶节点”