【发布时间】:2021-09-14 07:12:45
【问题描述】:
我有 4 张桌子 -
制表符:d
Name | ID
----------
A | 1
B | 2
C | 3
标签:p
Name | ID
----------
AX | 1
B | 2
X | 3
Y | 4
Z | 5
标签:s
Name | ID
----------
A | 1
BL | 2
V | 3
M | 4
标签:a
Name | ID
----------
K | 1
J | 2
H | 3
N | 4
现在我用的是 MySQL,今天发现 MySQL 不支持 FULL join。所以,我对所有 4 个表使用左连接,然后使用“联合”和右连接来合并所有 4 个表的记录。 我正在使用的查询就像 -
(select d.Name, p.Name, s.Name, a.Name from doc d
left join
prof p
on d.id = p.id
left join
sing s
on d.id = s.id
left join
act a
on d.id = a.id)
union
(select d.Name, p.Name, s.Name, a.Name from doc d
right join
prof p
on d.id = p.id
right join
sing s
on d.id = s.id
right join
act a
on d.id = a.id)
但这并没有给出预期的输出。它给出了类似的东西 -
D | P | S | A
---------------------------------
A | AX | A | K
B | B | BL | J
C | X | V | H
NULL | NULL | NULL | N
实际输出应该是-
D | P | S | A
---------------------------------
A | AX | A | K
B | B | BL | J
C | X | V | H
NULL | Y | M | N
NULL | Z | NULL | NULL
请帮我弄清楚我错过了什么!也帮助我得到结果...
【问题讨论】:
-
只是一个关于如何使它更容易的线索:
select * from d,p,s,a; -
@FlashThunder No, never 如果可以避免的话,在 from 子句中添加逗号。
-
@TimBiegeleisen 为什么不呢,它比 join 快得多(在语法和计算时间上)
-
什么是 MySQL 版本?