Mysql di mana alias kolom tidak dikenal

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 sebuah kolom memiliki alias, maka Anda harus menggunakan alias tersebut dalam klausa ORDER BY yang mereferensikan kolom tersebut

Jika Anda mendapatkan kesalahan “1054 (42S22). Kolom tidak dikenal '…' di 'klausa pesanan'” saat menggunakan klausa UNION di MySQL, bisa jadi karena Anda mencoba mereferensikan kolom alias dengan nama kolomnya

Saat menggunakan klausa UNION di MySQL, jika kolom memiliki alias, maka Anda harus menggunakan alias tersebut di klausa ORDER BY yang mereferensikan kolom tersebut

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

Contoh Kesalahan

Berikut adalah 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'
_

Di sini saya mencoba mengurutkan hasil berdasarkan kolom TeacherName, tetapi kolom tersebut memiliki alias. Fakta bahwa saya tidak menggunakan alias di klausa ORDER BY sudah cukup untuk menghasilkan kesalahan

Kueri yang saya jalankan adalah sebagai berikut, namun saya mendapatkan kesalahan ini

#1054 - Kolom tidak diketahui 'kode_pos_dijamin' di subquery 'IN/ALL/ANY'

PILIH `pengguna`. `nama_pertama`, `pengguna`. `nama_terakhir`, `pengguna`. `email`,

SUBSTRING(`lokasi`. `mentah`,-6,4) SEBAGAI `kode_pos_dijamin`

DARI `pengguna` KIRI KELUAR GABUNG `lokasi`

AKTIF `pengguna`. `id` = `lokasi`. `user_id`

WHERE `guaranteed_postcode` NOT IN #ini adalah tempat col palsu digunakan

(

PILIH `postcode` DARI `postcodes` MANA `region` DI

(

'Australia'

)

)

Pertanyaanku adalah. mengapa saya tidak dapat menggunakan kolom palsu di klausa mana dari kueri DB yang sama?

Baik itu menjalankan laporan atau menampilkan data dalam beberapa visualisasi lain, ekspresi kolom SQL SELECT harus bermakna dan dapat dimengerti. Untuk memberikan hasil kueri yang berharga tersebut, Pengembang SQL, gunakan banyak fungsi yang tersedia, kolom yang berdekatan, atau cara lain yang tidak mudah terlihat oleh pengguna akhir. Semua yang dikatakan, nama kolom sering kali paling menderita sejauh menyangkut keterbacaan, menggunakan nama panggilan fungsi yang panjang atau ekspresi gabungan lainnya. Tapi, karena keberuntungan ada di pihak kita, ada perbaikan yang mudah dan itu adalah kolom alias menggunakan kata kunci AS. Meskipun AS adalah opsional – dalam konteks khusus ini – saya melakukan kesalahan pada sisi keterbacaan dan menggunakannya saat aliasing SELECT ekspresi kolom

Mysql di mana alias kolom tidak dikenal
Mysql di mana alias kolom tidak dikenal
Gambar oleh Settergren dari Pixabay

OS dan DB digunakan

  • Linux Mint 20 “Ulyana”
  • MySQL8. 0. 23

Promosi diri

Jika Anda menikmati konten yang ditulis di sini, tentu saja, bagikan blog ini dan pos favorit Anda dengan orang lain yang mungkin juga mendapat manfaat atau menyukainya. Karena kopi adalah minuman favorit saya, Anda bahkan dapat membelikan saya satu jika Anda mau.


Untuk contoh di postingan ini, saya akan menggunakan tabel 'teman' ini dengan struktur sebagai berikut

DESC teman ;
+-----------+-------------+------+-----+---------
. Bidang       . Jenis         . Nol . Kunci . Bawaan . Ekstra .
+-----------+-------------+------+-----+---------
. negara     . char(3)     < . | YA .     . NULL     .       .
. nama_depan . varchar(25) . TIDAK   .     . NULL     .       .
. nama_belakang . varchar(25) . TIDAK   .     . NULL     .       .
. status       . char(2)     < . | YA .     . NULL     .       .
. phone_num   . char(12)    < . | YA .     . NULL     .       .
. ulang tahun   . tanggal         . YA .     . . . . . . . . . . . . . . . . . . . . . . . . | NULL     .       .
. usia       . int         . YA .     . . . . . . . . . . . . . . . . . . . . . . . . | NULL     .       .
+-----------+-------------+------+-----+---------
7 baris di set (0.0035 detik )

Anda dapat membayangkan bahwa permintaan umum mungkin melibatkan menampilkan kolom 'nama_pertama' dan 'nama_belakang' menjadi jenis output nama lengkap. Tidak ada yang sulit sama sekali di MySQL. Menggunakan panggilan fungsi CONCAT() bersarang, hasil kueri terlihat seperti ini

  PILIH CONCAT(CONCAT(first_name, ' '), last_name)
  DARI teman ;
+--------------------------------------------------+
. CONCAT(CONCAT( nama_depan . , ' '), last_name) |
+--------------------------------------------------+
. Maks Maksimal                                   .
. Mary Murphy                                 .
. Charlie Charles                             .
. Humpty Dumpty                               .
. Roger Dodger                               .
. Jim Russ                                   .
. Jupyter Moonbeam                           .
+--------------------------------------------------+
7 baris di set (0.0012 detik )

Apakah Anda akan melihat nama kolom itu? . Apa yang harus dilakukan?

  PILIH CONCAT(CONCAT(first_name, ' '), last_name) AS full_name
  DARI teman ;
+------------------+
. nama_lengkap       .
+------------------+
. Maks Maksimal         .
. Mary Murphy       .
. Charlie Charles .
. Humpty Dumpty     .
. Roger Dodger     .
. Jim Russ         .
. Jupyter Moonbeam .
+------------------+
7 baris di set (0.0010 dtk )

Jauh lebih baik bukan?

Sejujurnya, Anda bahkan dapat menghilangkan kata kunci AS sekaligus dan mendapatkan hasil yang sama

PILIH CONCAT(CONCAT(first_name, ' '), last_name) full_name
DARI teman ;
+------------------+
. nama_lengkap       .
+------------------+
. Maks Maksimal         .
. Mary Murphy       .
. Charlie Charles .
. Humpty Dumpty     .
. Roger Dodger     .
. Jim Russ         .
. Jupyter Moonbeam .
+------------------+
7 baris di set (0.0011 dtk )


Pertimbangkan memberikan sumbangan kecil untuk mendukung usaha saya karena saya terus memberikan konten berharga di sini di blog saya. Terima kasih banyak

Mysql di mana alias kolom tidak dikenal
Mysql di mana alias kolom tidak dikenal


Gotcha dan Ekstra

Untuk lebih jelasnya, Anda tidak dapat melakukan ini

PILIH CONCAT(CONCAT(first_name, ' '), last_name) AS full_name
DARI teman
WHERE full_name LIKE 'M %';
ERROR. 1054 . Tidak diketahui kolom 'lengkap _ nama' in 'where clause'

SELECT kolom dan ekspresi belum tersedia saat klausa WHERE dijalankan, oleh karena itu muncul pesan kesalahan "Nama lengkap kolom tidak dikenal di klausa tempat"

Namun, Anda dapat menggunakan alias kolom dalam klausa ORDER BY

PILIH CONCAT(CONCAT(first_name, ' '), last_name) AS full_name
DARI teman
ORDER BY full_name ASC;
+------------------+
. nama_lengkap       .
+------------------+
. Charlie Charles .
. Humpty Dumpty     .
. Jim Russ         .
. Jupyter Moonbeam .
. Mary Murphy       .
. Maks Maksimal         .
. Roger Dodger     .
+------------------+
7 baris di set (0.0598 dtk )

Lain kali nama kolom daftar SELECT_ Anda perlu diberi nama yang lebih baik, alias dengan (atau tanpa) kata kunci AS

Seperti apa yang telah Anda baca?

Ajakan Bertindak

Terima kasih telah meluangkan waktu untuk membaca postingan ini. Saya sangat berharap Anda menemukan sesuatu yang menarik dan mencerahkan. Silakan bagikan temuan Anda di sini, dengan orang lain yang Anda kenal yang juga akan mendapatkan nilai yang sama

Kunjungi halaman Portfolio-Projects untuk melihat entri blog/tulisan teknis yang telah saya selesaikan untuk klien.



Untuk menerima email notifikasi (Never Spam) dari blog ini (“Digital Owl’s Prose”) untuk postingan blog terbaru saat dipublikasikan, silakan berlangganan (atas kemauan Anda sendiri) dengan mengeklik tombol ‘Klik Untuk Berlangganan. ’ di sidebar di beranda. (Silakan meninjau Halaman Kebijakan Privasi Prosa Digital Owl kapan saja untuk pertanyaan apa pun yang mungkin Anda miliki. pembaruan email, opt-in, opt-out, formulir kontak, dll...)

Pastikan dan kunjungi halaman “Yang Terbaik” untuk koleksi postingan blog terbaik saya.


Josh Otwell memiliki hasrat untuk belajar dan berkembang sebagai SQL Developer dan blogger. Kegiatan favorit lainnya menemukannya dengan hidung terkubur di buku bagus, artikel, atau baris perintah Linux. Di antaranya, ia berbagi kecintaan pada game tabletop RPG, membaca novel fantasi, dan menghabiskan waktu bersama istri dan kedua putrinya.

Penafian. Contoh yang disajikan dalam posting ini adalah gagasan hipotetis tentang bagaimana mencapai jenis hasil yang serupa. Mereka bukan solusi terbaik terbaik. Sebagian besar, jika tidak semua, dari contoh yang diberikan, dilakukan pada lingkungan stasiun kerja pengembangan/pembelajaran pribadi dan tidak boleh dianggap sebagai kualitas produksi atau siap. Tujuan dan kebutuhan khusus Anda mungkin berbeda. Gunakan praktik-praktik yang paling menguntungkan kebutuhan dan tujuan Anda. Pendapat adalah milik saya sendiri

Bisakah kita menggunakan alias di klausa WHERE di MySQL?

Sebuah alias kolom tidak dapat digunakan dalam klausa SELECT, WHERE, GROUP BY atau HAVING karena urutan eksekusi . Anda harus merujuk ke nama kolom asli.

Bisakah kita menggunakan nama alias di klausa WHERE di SQL Server?

Klausa WHERE dapat berisi alias yang tidak berkorelasi dan alias yang berkorelasi .

Bagaimana cara menggunakan bidang alias AS di MySQL?

Alias ​​pada MySQL digunakan untuk memberi nama sementara pada tabel atau kolom pada tabel untuk keperluan query tertentu. Ini berfungsi sebagai nama panggilan untuk mengekspresikan nama tabel atau kolom. . Penjelasan Parameter

Bagaimana cara menentukan alias kolom?

Untuk membuat alias kolom. Jenis. PILIH kolom1 [AS] alias1, kolom2 [AS] alias2,. kolomN [AS] aliasN DARI tabel ; . , kolom adalah nama kolom; . , aliasN adalah alias kolom yang sesuai; .