我有一个表C,其中包含表A的id以及表B的id。如何选择所有唯一行并将id更改为表A和B中的相应名称。
table contain IDs Table A Table B
--------------- --------------- ---------------
A_id | B_id A_id | Name B_id | Name
--------------- --------------- ---------------
1 | 2 1 | AA 1 | a
1 | 4 2 | BB 2 | b
3 | 2 3 | CC 3 | c
3 | 1 4 | DD 4 | d
3 | 1
结果必须是
---------------
A_Name | B_Name
--------------
AA | b
AA | d
CC | b
CC | a
非常感谢您的帮助。
答案 0 :(得分:0)
一种方法是加入所有三个表:
SELECT DISTINCT A.name, B.name
FROM A
INNER JOIN C
ON A.A_id = C.A_id
INNER JOIN B
ON B.B_id = C.B_id
'DISTINCT'关键字消除重复(特别是表C中的最后两行)。
此查询适用于我的样本数据。
答案 1 :(得分:0)
你需要的是什么
INNER JOIN: INNER JOIN关键字选择两个表中的所有行,只要两个表中的列匹配。和
DISTINCT: DISTINCT关键字只能用于返回不同的(不同的)值。
select distinct a.name,b.name
from c
inner join b using(b_id)
inner join a using(a_id)
浏览PostgreSQL - JOINS了解详情。