SQL 列包含另一行的 ID

SQL Column Contains ID of Another Row

假设我有一个具有以下形式的 SQL 数据库 my_table,其中一列包含另一行的 ID。我怎样才能 select 给定行的名称列和基础 id 行的名称?

例如,select通过 SELECT name, ? FROM my_table WHERE id IN (1, 2) 访问 ID 1 和 2 应该 return:

name, underlying_name
Apple,, 
Pear, Strawberry

Self-join,我推测:

select a.id, a.name, b.name
from my_table a left join my_table b on b.id = a.underlying_id
order by a.id;

或简单情况下的相关子查询:

SELECT name
    , (SELECT name FROM my_table WHERE id = a.underlying_id) AS underlying_name
FROM   my_table a
ORDER  BY id;

我认为您希望去掉第三行,因为您将该数据点放在单独的列中。可以添加 where 条件来处理

select a.id, a.name, b.name as underlying_name
from t a 
left join t b on b.id = a.underlying_id
where a.id not in (select underlying_id 
                   from t
                   where underlying_id is not null);