繁体   English   中英

SQL 使用条件连接来自两个表的相同信息

[英]SQL join same information from two tables using conditions

我有一个带有人特征的主表t ,我想将来自其他两个表mn出生日期信息加入到该表中,从而在表t创建birth_date列。 我加入的关键变量是出现在所有三个表中的ID

t.age < 18的问题是表t包含变量age并且我想仅当t.age < 18时才加入表m出生日期, n仅当t.age >= 18时才t.age >= 18n出生日期。 我现在拥有的是:

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_1birth_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM