我有一张像下面的桌子

id | name     | pid

1  | sam      | NULL

2  | sams ref | 1

3  | pam      | NULL


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

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

因此,如果任何行都引用了另一行,则不应同时显示这两行。

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

在旁,这是一种良好的做法吗?请对此提出建议。

最佳答案

采用

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

要么
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
)

关于这是否是好的做法:
不知道要求等等。我不知道如何讨论这个问题。

关于mysql - mysql防止显示行ONE,该行在另一行第二具有引用,但在行三没有引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8148425/

10-16 15:17