使用查询结果从另一列获取值

时间:2020-01-16 10:51:49

标签: sql postgresql

我有2张这样的表格:

TABLE1: id |名称|信息

TABLE2:名称|更多信息

我有一个查询,该查询从第一个表返回一个 name 的列表。然后,我想用那些从另一张表中获得相应的 moreinfo 。例如,如果返回名称a,b,并且在表2中,我有 a |。苹果,b |面包我要苹果和面包归来。

是否有关于最佳方法的想法?任何帮助表示感谢,谢谢!

2 个答案:

答案 0 :(得分:1)

似乎您只想在这里加入:

SELECT t1.name, t2.moreinfo
FROM TABLE1 t1
INNER JOIN TABLE2 t2
    ON t1.name = t2.name;

如果要报告第一个表中的所有名称,即使它们在第二个表中没有匹配的名称,也可以使用左联接:

SELECT t1.name, COALESCE(t2.moreinfo, 'NA') AS moreinfo
FROM TABLE1 t1
LEFT JOIN TABLE2 t2
    ON t1.name = t2.name;

答案 1 :(得分:1)

从字面上看,您似乎要求退回Apple和Bread,但不一定要求提供与该名称相关的其他信息。目前尚不清楚查询结果的格式。

select moreinfo from table2 where name in (YOURQUERYRESULT);

YOURQUERYRESULT可以是仅返回名称或包含名称的列表的查询。

在其他地方可以用连接示例回答问题,在该示例中,您可能希望用查询代替表。

select a.id, a.name, a.info, b.moreinfo 
from (YOURQUERY) a 
join table2 b on a.name=b.name

我建议您在table2中添加一个id列以标识用户并加入该字段。名称更改,并且多个用户具有相同的名称。

最好的问候,
比尼亚尼

相关问题