Saya punya pertanyaan sederhana:
SELECT u_name AS user_name FROM users WHERE user_name = "john";
Saya mengerti Unknown Column 'user_name' in where clause
. Tidak dapatkah saya merujuk ke 'user_name'
bagian lain dari pernyataan bahkan setelahnya select 'u_name as user_name'
?
mysql
sql
mysql-error-1054
Btuman
sumber
sumber
Bagaimana dengan:
sumber
HAVING
bukanWHERE
dalam kasus ini?Lihat halaman manual MySQL berikut ini: http://dev.mysql.com/doc/refman/5.0/en/select.html
(...)
sumber
Anggap saja seperti ini, klausa where Anda mengevaluasi terlebih dahulu, untuk menentukan baris mana (atau baris gabungan) yang perlu dikembalikan. Setelah klausa where dijalankan, klausa pemilihan berjalan untuknya.
Sederhananya, bayangkan ini:
Anda tidak dapat mereferensikan paruh pertama tanpa yang kedua. Di mana selalu dievaluasi terlebih dahulu, lalu klausa pilih.
sumber
Jika Anda mencoba melakukan kueri seperti berikut (temukan semua node dengan setidaknya satu lampiran) di mana Anda telah menggunakan pernyataan SELECT untuk membuat bidang baru yang sebenarnya tidak ada dalam database, dan coba gunakan alias untuk hasil itu Anda akan mengalami masalah yang sama:
Anda akan mendapatkan error "Kolom tidak diketahui 'attachmentcount' di klausa WHERE".
Solusi sebenarnya cukup sederhana - cukup ganti alias dengan pernyataan yang menghasilkan alias, misalnya:
Anda masih akan mendapatkan alias kembali, tetapi sekarang SQL tidak boleh mengganggu alias tidak dikenal.
sumber
(
dalam kueri Anda sebelum(COUNT(*)
yang tidak ditutup di mana pun.Definisi Anda
alias
tidak disambut olehWHERE
klausa Anda harus menggunakanHAVING
klausa untuk iniATAU Anda bisa langsung menggunakan nama kolom asli dengan
WHERE
Sama seperti Anda memiliki hasil dalam alias yang ditentukan pengguna sebagai hasil dari subquery atau perhitungan apa pun, itu akan diakses oleh
HAVING
klausa bukan olehWHERE
sumber
Antara:
atau:
Yang terakhir harus sama dengan yang pertama jika RDBMS mendukung dorongan predikat ke dalam tampilan in-line.
sumber
dikoreksi:
sumber
Tidak, Anda perlu memilihnya dengan nama yang benar. Jika Anda memberikan tabel yang Anda pilih dari alias, Anda dapat menggunakannya.
sumber
Tidak Anda tidak bisa. user_name tidak ada sampai waktu kembali.
sumber
Kolom tidak diketahui dalam
WHERE
klausa yang disebabkan oleh baris 1 dan 2 dan diselesaikan oleh baris 3:$sql = "SELECT * FROM users WHERE username =".$userName;
$sql = "SELECT * FROM users WHERE username =".$userName."";
$sql = "SELECT * FROM users WHERE username ='".$userName."'";
sumber
Mungkin bisa membantu.
Kamu bisa
Berhasil.
TAPI PASTIKAN APA YANG ANDA LAKUKAN!
Tapi, mungkin itu membantu dalam beberapa kasus
sumber
Meskipun Anda dapat membuat alias tabel di dalam kueri Anda (yaitu, "PILIH u.username FROM users u;"), Anda harus menggunakan nama sebenarnya dari kolom yang Anda referensikan. AS hanya memengaruhi bagaimana bidang dikembalikan.
sumber
sumber
Baru saja mengalami masalah ini.
Pastikan tidak ada spasi di nama entitas di database.
misalnya 'user_name' bukan 'user_name'
sumber
coba tugas Anda menggunakan kondisi IN atau OR dan juga kueri ini bekerja di spark-1.6.x
atau
sumber
Bagi saya, akar masalahnya adalah angka yang saya salin untuk digunakan dalam klausa WHERE. Nomor itu memiliki simbol "tidak terlihat", setidaknya untuk MySQL Workbench. Saya menempatkan nomor di konsol Chrome itu terlihat jelas.
sumber
Saya memiliki masalah yang sama, saya merasa ini berguna.
ingat untuk memasukkan $ user dalam tanda kutip tunggal ''.
sumber