Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql阻止显示第二行中有引用但第三行中没有引用的第一行_Mysql_Join - Fatal编程技术网

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
)