我必须做一些计时。有些员工是第一团队的一部分,有些是第二团队的一部分。我需要显示一个简单的表格,列出谁登录以及何时登录以及其他一些基本信息。
如果表team1和team2的列(first_name
,last_name
和date
)相同,但是可以绝对保证只有其中一个表每行返回数据避免使用一堆别名(first_name AS team1_first_name
),而总是让SQL返回first_name
?
查询示例:
SELECT *
FROM associates AS ac
LEFT JOIN team1 AS t1 ON (t1.id = ac.team1)
LEFT JOIN team2 AS t2 ON (t2.id = ac.team2)
ORDER BY ac.date DESC LIMIT 100;
答案 0 :(得分:1)
由于t1.first_name
和t2.first_name
中的一个为空,而另一个不是,
您可以像这样在select语句中使用coalesce()
:
select
coalesce(t1.first_name, t2.first_name) first_name,
coalesce(t1.last_name, t2.last_name) last_name,
.............................................
答案 1 :(得分:1)
如果您不想输入所有列,而员工只属于一个团队,则可以union
之前的join
表格:
SELECT a.*, t.*
FROM associates a JOIN
((SELECT t1.* FROM team1 t1) UNION ALL
(SELECT t2.* FROM team2 t2)
) t
ON t.id IN (ac.team1, ac.team2)
ORDER BY a.date DESC
LIMIT 100;