我有一张很简单的桌子,看起来像这样。
我们将表称为“family”,列是ID、name、age和parent,因此:

ID    Name      Age     Parent
------------------------------
1     Bob        50      NULL
2     Matt       20        1
3     Rick       18        1

ID是主键,Parent是引用ID的外键
我要做的是列出每个父母的身份和名字。
我当前的查询如下:
Select ID, Name
from family
where ID = Parent;

但这没有结果。我的查询怎么不正确?它不应该显示找到的所有父ID的所有记录吗?谢谢!
我正在寻找的结果如下:
ID    Name
--------------
1     Bob

如果桌子更大并且有多个父母,他们当然也会在结果中列出。

最佳答案

您的查询尝试不会相互比较行,这(可能)是最简单的:

SELECT ID, Name
FROM family
WHERE ID IN (SELECT Parent FROM family)
;

这种选择可能更快:
SELECT DISTINCT p.ID, p.Name
FROM family AS p
INNER JOIN family AS c ON p.ID = c.Parent
;

10-01 23:52
查看更多