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

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 toàn cục” khi sử dụng UNION trong MySQL

Nếu bạn gặp lỗi có nội dung “ERROR 1250 (42000):Không thể sử dụng bảng‘… ’từ một trong các CHỌN trong mệnh đề ORDER chung” khi sử dụng UNION trong một truy vấn MySQL, có thể là do bạn đang đặt tên cột với tên bảng của nó đủ điều kiện.

Điều này không hoạt động trong MySQL.

Để khắc phục sự cố 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 global ORDER clause

Ở đây, tôi đã cố gắng sắp xếp các kết quả theo 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).

MySQL không cho phép các bảng được tham chiếu theo cách này khi sắp xếp các kết quả của một UNION hoạt động.

Giải pháp 1

Một cách để khắc phục điều 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;

Kết quả:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+

Giải pháp 2

Nếu tùy chọn trước đó không phù hợp, một cách khác để khắc phục sự cố là sử dụng bí danh. Nói cách khác, chỉ định một bí danh cho cột, sau đó tham chiếu bí danh đó trong ORDER BY mệnh đề:

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

Kết quả:

+--------+
| t      |
+--------+
| Ben    |
| Bill   |
| Cathy  |
| Ein    |
| Faye   |
| Jet    |
| Spike  |
| Warren |
+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tính doanh số trung bình mỗi tuần trong MySQL

  2. Một ràng buộc để ngăn chặn việc chèn một chuỗi trống trong MySQL

  3. MySQL DROP COLUMN

  4. Làm cách nào để lưu trữ các giá trị NULL trong các trường datetime trong MySQL?

  5. Hướng dẫn thiết kế cơ sở dữ liệu cho sự kiện lịch và lời nhắc trong MySQL