Bạn đang thiếu thực tế là các khung nhìn trong MySQL không cho phép truy vấn con trong from mệnh đề. Chúng được phép trong select và where và having các mệnh đề, tuy nhiên.
tài liệu khá rõ ràng:
Trong trường hợp của bạn, bạn có thể viết lại from mệnh đề như một truy vấn con tương quan trong select mệnh đề. Bạn cũng có thể sử dụng nhiều lớp chế độ xem để làm những gì bạn muốn.
CHỈNH SỬA:
Câu lệnh SELECT trong SQL có các mệnh đề sau:SELECT , FROM , WHERE , GROUP BY , HAVING và ORDER BY (theo tiêu chuẩn). Ngoài ra, MySQL còn thêm những thứ như LIMIT và INTO OUTFILE . Bạn có thể thấy điều này theo cách mà MySQL mô tả SELECT trong tài liệu
. Bạn cũng có thể thấy điều này trong tài liệu cho hầu hết mọi cơ sở dữ liệu.
Các thao tác như join là một phần của FROM mệnh đề (tương tự WITH ROLLUP là một phần của GROUP BY và DESC là một phần của ORDER BY ). Đây có vẻ giống như các quy ước cú pháp phức tạp, nhưng nó trở nên quan trọng khi có một hạn chế như ở trên.
Có lẽ một lý do cho sự nhầm lẫn là kiểu thụt lề giống như sau:
select . . .
from t1
inner join t2
on . . .
Nơi các câu lệnh kết hợp xếp hàng dưới select . Điều này gây hiểu lầm. Tôi sẽ viết cái này là:
select
from t1 join
t2
on . . .
Chỉ select các mệnh đề xếp hàng bên dưới select.