MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Khắc phục “ERROR 1250 (42000):Không thể sử dụng bảng‘… ’từ một trong các SELECT trong mệnh đề ORDER” trong MariaDB

Nếu bạn nhận được “ERROR 1250 (42000):Không thể sử dụng bảng '…' từ một trong các CHỌN trong mệnh đề LỆNH”, thì có thể là do bạn đủ điều kiện cho một tên cột với tên bảng của nó khi sử dụng một toán tử chẳng hạn như UNION , INTERSECT hoặc EXCEPT trong MariaDB.

Để khắc phục điều này, hãy xóa tên bảng hoặc sử dụng bí danh cột.

Ví dụ về Lỗi

Dưới đây là một ví dụ về mã tạo ra lỗi:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;

Kết quả:

ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in ORDER clause

Trong trường hợp này, tôi đã cố gắng sắp xếp kết quả bằng TeacherName nhưng tôi đã đủ điều kiện cho cột đó với tên bảng (Tôi đã sử dụng Teachers.TeacherName để tham chiếu đến tên cột).

Các bảng tham chiếu như thế này không hoạt động khi sắp xếp các kết quả của một UNION hoạt động trong MariaDB. Điều này cũng đúng khi sắp xếp các kết quả của INTERSECT toán tử và EXCEPT nhà điều hành.

Giải pháp 1

Một cách để khắc phục sự cố này là xóa tên bảng khỏi ORDER BY mệnh đề:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Giải pháp 2

Một cách khác để sửa nó là sử dụng bí danh cho cột:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Với tùy chọn này, chúng tôi chỉ định một bí danh cho cột và sau đó tham chiếu bí danh đó trong ORDER BY mệnh đề.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng quan về DBaaS mới từ MariaDB - SkySQL

  2. Cách SLEEP () hoạt động trong MariaDB

  3. Cách LPAD () hoạt động trong MariaDB

  4. Cách SIGN () hoạt động trong MariaDB

  5. MariaDB DATABASE () Giải thích