返回表(id,STR3),其中id来自一个表,STR3来自另一个表,并且表在字段中具有相同的字符串

时间:2019-05-02 20:49:24

标签: sql postgresql

我有三个表:

t1(ID int, STR1 varchar(20), STR2 varchar(30)),
t2(STR1ID varchar(20), STR3 varchar(30)),
t3(STR1ID varchar(20), STR3 varchar(30)).

我如何编写一个将返回表(ID int, STR3 varchar(30))的请求,其中将对t1中的每个字符串写入STR3中的字符串t2,其中{{ 1}}。如果STR1ID == STR1中没有这样的字符串,请求应该尝试在t2中找到这样的字符串,并且如果t3中没有这样的字符串,请不要在输出中添加该字符串。

1 个答案:

答案 0 :(得分:0)

您需要将t1左连接到其他2个表:

select 
  t1.id,
  coalesce(t2.str3, t3.str3) str3
from t1 
left join t2 on t2.str1id = t1.str1
left join t3 on t3.str1id = t1.str1