Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perbaiki "ERROR 1054 (42S22):Kolom tidak dikenal '...' di 'order clause' saat menggunakan UNION di MySQL

Jika Anda mendapatkan kesalahan "1054 (42S22):Kolom tidak diketahui '...' di 'order clause'" saat menggunakan UNION klausa di MySQL, bisa jadi karena Anda mencoba mereferensikan kolom alias dengan nama kolomnya.

Saat menggunakan UNION klausa di MySQL, jika kolom memiliki alias, maka Anda harus menggunakan alias itu di ORDER BY apa pun klausa yang mereferensikan kolom itu.

Jadi untuk memperbaiki kesalahan, pastikan untuk mereferensikan kolom dengan aliasnya. Atau, Anda dapat menghapus alias dan merujuk nama kolom secara langsung.

Contoh Kesalahan

Berikut contoh kode yang menghasilkan kesalahan:

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

Hasil:

ERROR 1054 (42S22): Unknown column 'TeacherName' in 'order clause'

Disini saya mencoba mengurutkan hasilnya dengan TeacherName kolom, tetapi kolom itu memiliki alias. Fakta bahwa saya tidak menggunakan alias di ORDER BY klausa sudah cukup untuk menghasilkan kesalahan.

Solusi 1

Salah satu cara untuk memperbaiki masalah ini adalah dengan menggunakan alias di ORDER BY klausa:

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

Hasil:

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

Itu memecahkan masalah.

Solusi 2

Cara lain untuk melakukannya adalah dengan menghapus alias sama sekali:

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

Hasil:

+-------------+
| TeacherName |
+-------------+
| 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. Transaksi Codeigniter

  2. Laravel 5.4 pada PHP 7.0:Pengecualian PDO - Tidak dapat menemukan driver (MySQL)

  3. Menyiapkan kunci asing di phpMyAdmin?

  4. Cara Migrasi dari MSSQL ke MySQL

  5. Server MySQL telah hilang - tepat dalam 60 detik