我有一个这样的表格列表:
T1
ID | Name
3 | 'AAA'
4 | 'BBB'
5 | 'CCC'
6 | 'DDD'
7 | 'EEE'
T2
ID | Password
3 | 'test'
6 | 'password'
T3
ID | Birth Year | Last Name
4 | 1990 | 'John'
6 | 1988 | 'Megan'
7 | - | 'Bob'
T4
ID | Birth Year
7 | 1985
我想将它们全部合并到这里,注意到t3和t4都有出生年份列,但是这个值只有一个。
ID | Name | Password | Birth Year | Last Name
3 | 'AAA' | 'test' | - | -
4 | 'BBB' | - | 1990 | 'John'
5 | 'CCC' | - | - | -
6 | 'DDD' |'password'| 1988 | 'Megan'
7 | 'EEE' | - | 1985 | 'Bob'
有谁知道如何做到这一点? t1是“主”表,因此它将始终包含所有ID。
我试过了:
select * \
from t1 \
LEFT outer join t2 on t1.ID = t2.ID \
LEFT outer join t3 on t1.ID = t3.ID \
LEFT outer join t4 on t1.ID = t4.ID
但它无法正常工作,它为t1,t2,t3,t4中的每个列都有单独的列
答案 0 :(得分:0)
你可以选择性地将t4连接到t1,然后显示t4.BirthYear如果它不为null,否则为t3.BirthYear。像这样:
SELECT t1.ID, t1.Name, t2.Password, COALESCE(t4.BirthYear, t3.BirthYear) as BirthYear, t3,LastName
FROM t1
LEFT OUTER JOIN t2 on t1.ID = t2.ID
LEFT OUTER JOIN t3 on t1.ID = t3.ID
LEFT OUTER JOIN t4 on t1.ID = t4.ID and t4.BirthYear is NOT NULL
答案 1 :(得分:0)
select t1.ID,
t1.Name,
t2.Password,
COALESCE(t3.[Birth Year],t4.[Birth Year]), t3.[Last Name]
from t1
LEFT outer join t2 on t1.ID = t2.ID
LEFT outer join t3 on t1.ID = t3.ID
LEFT outer join t4 on t1.ID = t4.ID