从两个表之一中选择相同的数据

时间:2019-04-20 22:16:39

标签: mysql sql join mariadb

我必须做一些计时。有些员工是第一团队的一部分,有些是第二团队的一部分。我需要显示一个简单的表格,列出谁登录以及何时登录以及其他一些基本信息。

如果表team1和team2的列(first_namelast_namedate)相同,但是可以绝对保证只有其中一个表每行返回数据避免使用一堆别名(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;

2 个答案:

答案 0 :(得分:1)

由于t1.first_namet2.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;