MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Perbaiki "ERROR 1054 (42S22):Kolom tidak dikenal '...' di 'pada klausa" di MariaDB

Jika Anda mendapatkan kesalahan yang berbunyi seperti “ERROR 1054 (42S22):Kolom tidak dikenal ‘tab.ColName’ di ‘on clause” ” di MariaDB, berikut adalah tiga kemungkinan penyebab:

  • Kolom tidak ada.
  • Anda mencoba mereferensikan kolom alias dengan nama kolomnya.
  • Atau bisa juga sebaliknya. Anda bisa mereferensikan kolom dengan alias yang tidak pernah dideklarasikan.

Jika kolom memiliki alias, maka Anda harus menggunakan alias itu saat mereferensikannya di ON klausa saat melakukan gabungan terhadap dua tabel atau lebih. Sebaliknya, jika Anda mereferensikan kolom dengan alias, maka Anda perlu memastikan bahwa alias benar-benar dideklarasikan.

Contoh 1

Berikut contoh kode yang menghasilkan kesalahan:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON c.DogName = d.DogName;

Hasil:

ERROR 1054 (42S22): Unknown column 'c.DogName' in 'on clause'

Di sini saya tidak sengaja menggunakan c.DogName di ON klausa ketika saya bermaksud menggunakan c.CatName .

Dalam hal ini, perbaikannya sederhana. Gunakan nama kolom yang benar:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Contoh 2

Berikut contoh kode lain yang menghasilkan kesalahan:

SELECT 
    CatId,
    CatName
FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Hasil:

ERROR 1054 (42S22): Unknown column 'c.CatName' in 'on clause'

Di sini saya mereferensikan alias yang tidak ada di ON ayat. Saya menggunakan c.CatName untuk merujuk ke CatName kolom di Cats meja. Satu-satunya masalah adalah Cats tabel tidak memiliki alias.

Untuk memperbaiki masalah ini, yang harus kita lakukan adalah memberikan alias untuk Cats tabel:

SELECT 
    CatId,
    CatName
FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Atau, kita dapat menghapus semua referensi ke alias, dan cukup gunakan nama tabel lengkap:

SELECT 
    CatId,
    CatName
FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;

Satu hal yang harus saya tunjukkan adalah, dalam contoh ini kami tidak memberi awalan nama kolom di SELECT daftar dengan alias. Jika kita melakukannya, kita akan melihat kesalahan yang sama, tetapi dengan pesan yang sedikit berbeda:

SELECT 
    c.CatId,
    c.CatName
FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Hasil:

ERROR 1054 (42S22): Unknown column 'c.CatId' in 'field list'

Dalam hal ini, ia mendeteksi kolom yang tidak dikenal dalam daftar bidang sebelum menemukan yang ada di ON ayat. Bagaimanapun, solusinya sama.

Contoh 3

Berikut contoh kode lain yang menghasilkan kesalahan:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;

Hasil:

ERROR 1054 (42S22): Unknown column 'Cats.CatName' in 'on clause'

Dalam hal ini, sebuah alias dideklarasikan untuk Cats tabel, tapi saya tidak menggunakan alias itu di ON klausa.

Solusinya di sini, adalah menggunakan alias alih-alih nama tabel:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB LENGTHB() Dijelaskan

  2. Bagaimana UUID_SHORT() Bekerja di MariaDB

  3. Menggunakan Plugin Audit MariaDB untuk Keamanan Database

  4. Bagaimana LENGTH() Bekerja di MariaDB

  5. MariaDB JSON_CONTAINS() Dijelaskan