Một người bạn và tôi đang chơi với các mệnh đề JOIN
có sẵn trong MySQL. Dưới đây là cấu trúc bảng ta có:Lỗi cột không xác định trong cú pháp tham gia đầy đủ
create table abc
(
c1 int,
c2 char(1)
);
create table xyz
(
c2 char(1),
c3 varchar(5)
);
Các giá trị đưa vào số đó là:
insert into abc
values
(1,"a"),
(2,"b");
insert into xyz
values
("a","apple"),
("c","car");
Bây giờ, tôi có following two SQL statements (sqlfiddle link):
select
*,
'full'
from abc
full join xyz
using (c2);
và
select
*,
'full'
from abc
full join xyz
on abc.c2 = xyz.c2;
Như có thể thấy trong fiddle, truy vấn đầu tiên trả về:
| C2 | C1 | C3 | FULL |
|----|----|-------|------|
| a | 1 | apple | full |
thời gian, truy vấn thứ hai đặt ra và báo lỗi:
Unknown column 'abc.c2' in 'on clause':
Tại sao cột abc.c2
không được công nhận khi sử dụng ON
khoản của Cú pháp JOIN
?
Khi nào thì MySQL bắt đầu cho phép cú pháp FULL JOIN? Kinh nghiệm của tôi là cú pháp FULL JOIN không được hỗ trợ. – Taryn
Tôi không biết tại sao truy vấn đầu tiên lại chạy; như bluefeet chỉ ra mysql không - afaik - hỗ trợ các kết nối bên ngoài đầy đủ. Nếu bạn thay đổi truy vấn thứ hai để tham gia trái hoặc phải tham gia nó chạy mà không có lỗi. Điều bí ẩn hơn là tại sao truy vấn đầu tiên, tham gia đầy đủ với việc sử dụng, thực sự chạy. –
Điều này dường như là một lỗi cụ thể đối với MySql: khi truy vấn của bạn được chạy lại SQL Server ([demo 1] (http://sqlfiddle.com/#!3/10a05/3)) hoặc Oracle ([demo 2] (http://sqlfiddle.com/#!4/e2a21/15)). – dasblinkenlight