我有一张如下表格
id | name | pid
1 | sam | NULL
2 | sams ref | 1
3 | pam | NULL
第一次插入第一行,其中pid为null 我插入一行与第一行相关 然后我插入一个新的行,将来可能会被另一行引用。
现在我只想要显示第三行而不是第一行和第二行,因为第二行包含第一行的引用。
因此,如果任何行具有对另一行的引用,则不应显示这两行。
只应显示没有任何引用的行。
BESIDES,这是一个很好的做法吗?请提出建议。
答案 0 :(得分:1)
使用
SELECT
A.*
FROM myTable A
LEFT OUTER JOIN MyTable B ON B.PID = A.ID
WHERE A.PID IS NULL AND B.ID IS NULL
OR
SELECT
A.*
FROM MyTable A
WHERE A.ID NOT IN
(
SELECT X.ID FROM MyTable X WHERE X.PID IS NOT NULL
UNION
SELECT Y.PID FROM MyTable Y WHERE Y.PID IS NOT NULL
)
至于这是否是好的实践:
不知道要求等我不知道如何讨论......