Mysql 从左表和完全联接右表中选择值
这有点难以解释,但我会尽最大努力: 比如说,我有表A:Mysql 从左表和完全联接右表中选择值,mysql,join,Mysql,Join,这有点难以解释,但我会尽最大努力: 比如说,我有表A: event | task | ref_person ------+------+----------- 1 | 20 | 1 2 | 9 | 2 我有表B(包含person): MySQL查询是什么样子的,它生成这样的表: event | task | person ------+------+------- 1 | 20 | foo 1 | NULL | ba
event | task | ref_person
------+------+-----------
1 | 20 | 1
2 | 9 | 2
我有表B(包含person
):
MySQL查询是什么样子的,它生成这样的表:
event | task | person
------+------+-------
1 | 20 | foo
1 | NULL | bar
1 | NULL | jim
2 | NULL | foo
2 | 9 | bar
2 | NULL | jim
我当前的方法是使用右连接
,但这不会使事件与空值结合
这就是我当前的陈述:
SELECT
a.*,
b.name
FROM
a
RIGHT JOIN b
ON b.id = a.ref_person
ORDER BY
a.event,
b.name
通知
sqlfiddle似乎已关闭,我将在它再次打开时添加一个您要执行
交叉连接
以获取所有行,然后执行案例
逻辑以获取任务:
select a.event,
(case when a.ref_person = b.id then a.task end) as task,
b.name
from tablea a cross join
tableb b ;
如果你喜欢,考虑下面简单的两步行动:1。如果您还没有这样做,请提供适当的DDL(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。
select a.event,
(case when a.ref_person = b.id then a.task end) as task,
b.name
from tablea a cross join
tableb b ;