PostgreSQL:一个 table 上的子查询
PostgreSQL: Sub-Query on one table
我的 table 看起来(简化)如下:
ID, File, Subst_ID
1, "AAA"
2, "BBB", 3
3, "CCC"
记录文件名“File”;有时,一个文件(此处为 BBB)会被更新的文件(此处为 CCC)替换。
首先显示所有已被替换的记录:
SELECT ID, File, Subst_ID FROM Table WHERE Subst_ID IS NOT NULL;
OK,调出第2行。现在我需要添加一个子查询列QQ,它显示了替代记录的文件,例如应该带:
2, "BBB", 3, "CCC"
。我的方法不起作用:
SELECT ID, File, Subst_ID, (SELECT File FROM Table WHERE Subst-ID = ID) AS QQ FROM Table WHERE Subst_ID IS NOT NULL;
我的错误在哪里?谢谢!
我想你想要一个自我加入:
select t1.*, t2.file as subst_file
from mytable t1
inner join mytable t2 on t2.id = t1.subst_id
这是您要编写的查询 - 我发现它不太简洁,因为它需要一个 where
子句,而上面的则不需要:
select t1.*,
(select t2.file from mytable t2 where t2.id = t1.subst_id) as subst_file
from mytable t1
where t1.subst_id is not null
我的 table 看起来(简化)如下:
ID, File, Subst_ID
1, "AAA"
2, "BBB", 3
3, "CCC"
记录文件名“File”;有时,一个文件(此处为 BBB)会被更新的文件(此处为 CCC)替换。 首先显示所有已被替换的记录:
SELECT ID, File, Subst_ID FROM Table WHERE Subst_ID IS NOT NULL;
OK,调出第2行。现在我需要添加一个子查询列QQ,它显示了替代记录的文件,例如应该带:
2, "BBB", 3, "CCC"
。我的方法不起作用:
SELECT ID, File, Subst_ID, (SELECT File FROM Table WHERE Subst-ID = ID) AS QQ FROM Table WHERE Subst_ID IS NOT NULL;
我的错误在哪里?谢谢!
我想你想要一个自我加入:
select t1.*, t2.file as subst_file
from mytable t1
inner join mytable t2 on t2.id = t1.subst_id
这是您要编写的查询 - 我发现它不太简洁,因为它需要一个 where
子句,而上面的则不需要:
select t1.*,
(select t2.file from mytable t2 where t2.id = t1.subst_id) as subst_file
from mytable t1
where t1.subst_id is not null