Jika Anda mendapatkan kesalahan “ERROR 1054 (42S22):Kolom tidak dikenal 'colname' di 'order clause' ” di MariaDB, mungkin Anda mencoba mereferensikan kolom alias dengan nama kolomnya.
Ini adalah kesalahan umum saat menjalankan kueri yang menggabungkan dua tabel atau lebih. Itu juga bisa terjadi saat menggunakan operator seperti UNION
, INTERSECT
, dan EXCEPT
.
Umumnya, jika kolom memiliki alias, maka Anda harus menggunakan alias itu di ORDER BY
klausa yang mereferensikan kolom itu.
Untuk memperbaiki kesalahan, cukup rujuk kolom dengan aliasnya.
Atau, Anda dapat menghapus alias sama sekali dan merujuk nama kolom secara langsung.
Contoh Kesalahan
Berikut contoh kode yang menghasilkan kesalahan:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Hasil:
ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'
Disini saya tidak menggunakan alias di ORDER BY
klausa yang mengakibatkan kesalahan.
Solusi 1
Salah satu cara untuk memperbaiki masalah ini adalah dengan menggunakan alias di ORDER BY
klausa:
(SELECT TeacherName t FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Hasil:
+-------+ | t | +-------+ | Ben | | Cathy | +-------+
Dalam hal ini, alias menjadi tajuk kolom di hasil.
Solusi 2
Cara lain untuk melakukannya adalah dengan menghapus alias sama sekali:
(SELECT TeacherName FROM Teachers)
EXCEPT
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Hasil:
+-------------+ | TeacherName | +-------------+ | Ben | | Cathy | +-------------+
Kali ini nama kolom menjadi header kolom.