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);
为此,我更喜欢EXISTS
:
SELECT h.*
FROM Heroes h
WHERE EXISTS (SELECT h2.friend FROM Heroes h2 WHERE h2.friend = h.ID);
这通常具有更好的性能。但是IN
是好的。