mysql阻止显示第二行中有引用但第三行中没有引用的第一行
我有一张像下面这样的桌子mysql阻止显示第二行中有引用但第三行中没有引用的第一行,mysql,join,Mysql,Join,我有一张像下面这样的桌子 id | name | pid 1 | sam | NULL 2 | sams ref | 1 3 | pam | NULL 这是第一次插入pid为null的第一行 插入与第一行相关的行 然后我插入一行,它是新的,将来可能会被另一行引用 现在我只想显示第三行,而不是第一行和第二行,因为第二行包含第一行的引用 因此,如果任何一行引用了另一行,则不应同时显示这两行 只应显示没有任何引用的行 此外,这是一个好的做法吗?请对此提出建议。
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
或
至于这是否是好的做法:
在不知道要求等的情况下,我不知道如何讨论这个…Voila。工作我使用了第一个语句,我也会注意到第二个语句。此外我的问题的反面是什么?这不是孤立的一行,我想要有引用的行。@JayapalChandran通常需要在第二个问题中问这个问题。。。基本上,你在第二节中把“不在”改为“在”,而在第一节中把“为空”改为“不为空”。。。查询在服务器中返回的结果为零。首先,我在本地机器上使用它。版本会影响查询的执行方式吗?服务器中的版本:5.1.56-本地主机中的版本:5.1.30-community@JayapalChandran版本之间可能会有所不同,但最有可能的是数据不同…现在它正在工作。。。我忘了在服务器中默认将pid设置为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
)