Jika Anda menjalankan kueri di SQL Server, dan Anda mendapatkan kesalahan berikut…
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.
…Anda harus memeriksa pernyataan SQL Anda – Anda mungkin telah menghilangkan kolom dari SELECT
daftar.
Seperti yang tersirat dalam pesan kesalahan, Anda mungkin hanya akan melihat kesalahan ini jika Anda menjalankan kueri yang berisi UNION
, INTERSECT
atau EXCEPT
operator.
Cukup tambahkan kolom ke SELECT
. Anda list harus memperbaiki masalah.
Contoh
Berikut ini contoh menghasilkan kesalahan.
SELECT
CatName
FROM Cats
UNION ALL
SELECT
DogName
FROM Dogs
ORDER BY CatId;
Hasil:
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.
Masalahnya di sini, adalah saya mencoba memesan dengan CatId
kolom, tapi sebenarnya saya tidak memilih kolom itu di SELECT
daftar.
Cara termudah untuk memperbaikinya adalah dengan menambahkan kolom itu ke SELECT
. saya daftar.
SELECT
CatId AS PetID,
CatName AS PetName
FROM Cats
UNION ALL
SELECT
DogId AS PetID,
DogName AS PetName
FROM Dogs
ORDER BY PetId;
Hasil:
+---------+-----------+ | PetID | PetName | |---------+-----------| | 1 | Brush | | 1 | Yelp | | 2 | Scarcat | | 2 | Woofer | | 3 | Flutter | +---------+-----------+
Sebenarnya, dalam kasus saya, saya memilih kolom dengan nama yang berbeda (CatId
vs DogId
, CatName
vs DogName
), jadi saya memutuskan untuk menggunakan alias untuk kolom tersebut (PetId
dan PetName
). Dalam hal ini, saya dapat ORDER BY
nama alias (PetId
).