目前,我希望某些字段中不存在的记录,即,我想选择直接上级中不存在的位置中的记录。
这是我的表结构
我希望结果为
1.1.1,1.2.1,1.3.1
我尝试使用(not in)语法bu会引发error。任何帮助都是
答案 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
在您的特定样本中,也可以通过检查其中有多少个点来完成;-)