친구와 저는 MySQL에서 사용 가능한 JOIN
절을 가지고 놀았습니다. 그들에 삽입전체 조인 구문에서 알 수없는 열 오류가 발생했습니다.
create table abc
(
c1 int,
c2 char(1)
);
create table xyz
(
c2 char(1),
c3 varchar(5)
);
값은 다음과 같습니다 : 여기에 우리가 가지고있는 테이블 구조 지금
insert into abc
values
(1,"a"),
(2,"b");
insert into xyz
values
("a","apple"),
("c","car");
가, 내가 가지고있는 following two SQL statements (sqlfiddle link) :
select
*,
'full'
from abc
full join xyz
using (c2);
및
select
*,
'full'
from abc
full join xyz
on abc.c2 = xyz.c2;
로는 바이올린에서 볼 수, 첫 번째 질의는 반환
| C2 | C1 | C3 | FULL |
|----|----|-------|------|
| a | 1 | apple | full |
반면, 두 번째 쿼리가 제기 및 오류 : ON
절을 사용할 때 왜 열 abc.c2
가 인식되지
Unknown column 'abc.c2' in 'on clause':
JOIN
구문?
언제 MySQL이 FULL JOIN 구문을 허용합니까? 내 경험은 FULL JOIN 구문이 지원되지 않는다는 것입니다. – Taryn
첫 번째 쿼리가 실행되는 이유를 모르겠습니다. bluefeet은 mysql이 지적하지 않았기 때문에 - afaik - 완전한 외부 조인을 지원한다. 두 번째 쿼리를 왼쪽 조인 또는 오른쪽 조인으로 변경하면 오류없이 실행됩니다. 좀 더 신비한 것은 첫 번째 쿼리 인 use와 함께 완전 조인이 실제로 실행되는 이유입니다. –
이것은 MySql 관련 버그 인 것으로 보입니다 : 쿼리가 SQL Server ([demo 1] (http://sqlfiddle.com/#!3/10a05/3)) 또는 Oracle ([demo 2] (http://sqlfiddle.com/#!4/e2a21/15)). – dasblinkenlight