当前我想要一些不在一个字段中的记录,即,我想要选择位置中不在直接父字段中的记录。这是我的table结构我希望结果是1.1.1 , 1.2.1 , 1.3.1我试着使用(不在)语法,但它抛出错误。任何帮助都是值得赞赏的
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
在您的特定示例中,也可以通过检查有多少个点来完成;-)
nhn9ugyo2#
看起来您想要的是位置不是其他记录的直接父级的所有记录。我们可以尝试使用自反联接:
SELECT t1.* FROM yourTable t1 LEFT JOIN yourTable t2 ON t1.position = t2.immediate_parent WHERE t2.position IS NULL;
另一种表达方式是使用 EXISTS 条款:
EXISTS
SELECT t1.* FROM yourTable t1 WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.immediate_parent = t1.position);
0qx6xfy63#
也许你可以试试这个:
SELECT * FROM tableA A WHERE NOT EXISTS ( SELECT * FROM tableA AA WHERE A.position = AA.immediate_parent )
3条答案
按热度按时间rqdpfwrv1#
如果我理解正确,你需要有2级以上的记录。
在您的特定示例中,也可以通过检查有多少个点来完成;-)
nhn9ugyo2#
看起来您想要的是位置不是其他记录的直接父级的所有记录。我们可以尝试使用自反联接:
另一种表达方式是使用
EXISTS
条款:0qx6xfy63#
也许你可以试试这个: