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

Các mục ORDER BY phải xuất hiện trong danh sách chọn nếu câu lệnh chứa toán tử UNION, INTERSECT hoặc EXCEPT (SQL Server)

Nếu bạn đang chạy một truy vấn trong SQL Server và gặp lỗi sau…

Các mục
Msg 104, Level 16, State 1, Line 8
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.

… Bạn nên kiểm tra câu lệnh SQL của mình - có thể bạn đã bỏ qua một cột khỏi SELECT của mình danh sách.

Như thông báo lỗi ngụ ý, bạn có thể sẽ chỉ thấy lỗi này nếu bạn đang chạy truy vấn có chứa UNION , INTERSECT hoặc EXCEPT nhà điều hành.

Chỉ cần thêm cột vào SELECT của bạn danh sách sẽ khắc phục sự cố.

Ví dụ

Đây là một ví dụ về việc tạo ra lỗi.

SELECT 
    CatName
FROM Cats
UNION ALL
SELECT 
    DogName 
FROM Dogs
ORDER BY CatId;

Kết quả:

Các mục
Msg 104, Level 16, State 1, Line 8
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.

Vấn đề ở đây là tôi đang cố gắng đặt hàng theo CatId nhưng tôi không thực sự chọn cột đó trong SELECT của mình danh sách.

Cách dễ nhất để khắc phục điều này là thêm cột đó vào SELECT của tôi danh sách.

SELECT 
    CatId AS PetID,
    CatName AS PetName
FROM Cats
UNION ALL
SELECT 
    DogId AS PetID,
    DogName AS PetName
FROM Dogs
ORDER BY PetId;

Kết quả:

+---------+-----------+
| PetID   | PetName   |
|---------+-----------|
| 1       | Brush     |
| 1       | Yelp      |
| 2       | Scarcat   |
| 2       | Woofer    |
| 3       | Flutter   |
+---------+-----------+

Trên thực tế, trong trường hợp của tôi, tôi đang chọn các cột có tên khác nhau (CatId so với DogId , CatName so với DogName ), vì vậy tôi quyết định sử dụng bí danh cho các cột đó (PetIdPetName ). Trong trường hợp này, tôi có thể ORDER BY tên bí danh (PetId ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục Msg 8116 “Ngày kiểu dữ liệu đối số không hợp lệ cho đối số 1 của hàm chuỗi con” trong SQL Server

  2. Cách chọn mọi hàng trong đó giá trị cột KHÔNG bị phân biệt

  3. Cách trả về số nhóm tăng dần trên mỗi nhóm trong SQL

  4. Không thể tải hàng loạt. Mã lỗi hệ điều hành 5 (Quyền truy cập bị từ chối.)

  5. Thiết lập và cấu hình nhóm luôn sẵn sàng trong SQL Server