[英]SQL join same information from two tables using conditions
我有一个带有人特征的主表t
,我想将来自其他两个表m
和n
出生日期信息加入到该表中,从而在表t
创建birth_date
列。 我加入的关键变量是出现在所有三个表中的ID
。
我t.age < 18
的问题是表t
包含变量age
并且我想仅当t.age < 18
时才加入表m
出生日期, n
仅当t.age >= 18
时才t.age >= 18
表n
出生日期。 我现在拥有的是:
select t.*,
m.birth_date as birth_date_1,
n.birth_date as birth_date_2
from t
left join m
on (t.ID = m.ID and t.age < 18)
left join n
on (t.ID = n.ID and t.age >= 18);
这似乎有效,但是,我创建了两个列birth_date_1
和birth_date_2
。 如何在此选择中执行此操作以仅创建一列birth_date
?
如何在此选择中执行此操作以仅创建一列birth_date?
由于对于源表中的每条记录,最多有一个左连接会成功,因此您可以使用coalesce()
:
select t.*, coalesce(m.birth_date, n.birth_date) as birth_date
from t
left join m on t.ID = m.ID and t.age < 18
left join n on t.ID = n.ID and t.age >= 18
旁注:连接条件周围的括号是多余的。
你可以
SELECT
[...],
COALESCE(m.birth_date, n.birth_date) AS birth_date,
[...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.