Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 如何通过同一表中的另一列id返回记录?_Mysql_Sql - Fatal编程技术网

Mysql 如何通过同一表中的另一列id返回记录?

Mysql 如何通过同一表中的另一列id返回记录?,mysql,sql,Mysql,Sql,T1英雄 ID NAME FRIEND 001 TOM NULL 002 JEK NULL 003 MAX 001 004 JIZ NULL 005 ZAK 002 如何回报所有的朋友 结果应该是: 001 TOM NULL 002 JEK NULL 我试过这个: SELECT * FROM Heroes WHERE ID in ( SELECT * FROM Heroes WHERE ID IS NOT NULL) 您所处的轨道是正确的,只需在子查询中

T1英雄

ID    NAME FRIEND
001   TOM  NULL
002   JEK  NULL
003   MAX  001
004   JIZ  NULL
005   ZAK  002
如何回报所有的朋友

结果应该是:

001 TOM NULL
002 JEK NULL
我试过这个:

SELECT *
FROM Heroes
WHERE ID in ( SELECT * FROM Heroes WHERE ID IS NOT NULL)

您所处的轨道是正确的,只需在子查询中选择正确的列:

SELECT h.*
FROM Heroes h
WHERE h.ID IN (SELECT h2.friend FROM Heroes h2);
我希望
存在
用于此目的:

SELECT h.*
FROM Heroes h
WHERE EXISTS (SELECT h2.friend FROM Heroes h2 WHERE h2.friend = h.ID);

这通常具有更好的性能。但是中的
没有问题。

子查询应该只返回一列,即要与ID进行比较的列。