我和朋友正在玩JOINMySQL中的条款.这是我们的表结构:
create table abc
(
c1 int,
c2 char(1)
);
create table xyz
(
c2 char(1),
c3 varchar(5)
);
Run Code Online (Sandbox Code Playgroud)
插入其中的值为:
insert into abc
values
(1,"a"),
(2,"b");
insert into xyz
values
("a","apple"),
("c","car");
Run Code Online (Sandbox Code Playgroud)
select
*,
'full'
from abc
full join xyz
using (c2);
Run Code Online (Sandbox Code Playgroud)
和
select
*,
'full'
from abc
full join xyz
on abc.c2 = xyz.c2;
Run Code Online (Sandbox Code Playgroud)
从小提琴中可以看出,第一个查询返回:
| C2 | C1 | C3 | FULL |
|----|----|-------|------|
| a | 1 | apple | full |
Run Code Online (Sandbox Code Playgroud)
而第二个查询引发错误:
Unknown column 'abc.c2' in 'on clause':
Run Code Online (Sandbox Code Playgroud)
为什么abc.c2在使用语法ON子句时无法识别列JOIN?
Rim*_*mas 11
FULL JOINMySQL不支持.这是因为full被识别为abc表的别名.试试这个查询,它运行没有错误:
select
*,
'full'
from abc
full join xyz
on full.c2 = xyz.c2;
Run Code Online (Sandbox Code Playgroud)