Mysql 如何通过同一表中的另一列id返回记录?
T1英雄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) 您所处的轨道是正确的,只需在子查询中
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进行比较的列。