mysql阻止显示一行ONE,该行在另一行TWO中引用但在行THREE中没有引用

时间:2011-11-16 08:04:39

标签: mysql join

我有一张如下表格

id | name     | pid

1  | sam      | NULL

2  | sams ref | 1

3  | pam      | NULL

第一次插入第一行,其中pid为null 我插入一行与第一行相关 然后我插入一个新的行,将来可能会被另一行引用。

现在我只想要显示第三行而不是第一行和第二行,因为第二行包含第一行的引用。

因此,如果任何行具有对另一行的引用,则不应显示这两行。

只应显示没有任何引用的行。

BESIDES,这是一个很好的做法吗?请提出建议。

1 个答案:

答案 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
)

至于这是否是好的实践:

不知道要求等我不知道如何讨论......