Kolom tidak dikenal dalam kesalahan 'daftar bidang' pada kueri Pembaruan MySQL

127

Saya terus mendapatkan kesalahan MySQL # 1054, ketika mencoba melakukan kueri pembaruan ini:

UPDATE MASTER_USER_PROFILE, TRAN_USER_BRANCH
SET MASTER_USER_PROFILE.fellow=`y`
WHERE MASTER_USER_PROFILE.USER_ID = TRAN_USER_BRANCH.USER_ID
AND TRAN_USER_BRANCH.BRANCH_ID = 17

Ini mungkin beberapa kesalahan sintaks, tetapi saya telah mencoba menggunakan gabungan dalam dan perubahan lainnya, tetapi saya tetap mendapatkan pesan yang sama:

Unknown column 'y' in 'field list' 
saya disini
sumber

Jawaban:

167

Coba gunakan tanda kutip berbeda untuk "y" karena karakter tanda kutip pengenal adalah tanda petik ("` "). Jika tidak, MySQL "berpikir" bahwa Anda menunjuk ke kolom bernama "y".

Lihat juga Dokumentasi MySQL 5

tuergeist
sumber
Saya mengalami ini ketika saya bingung dan menggunakan tanda kutip ganda daripada tanda kutip tunggal di sekitar string saya.
tripleee
48

Lampirkan string apa pun untuk diteruskan ke server mysql di dalam tanda kutip tunggal; misalnya:

$name = "my name"
$query = " INSERT INTO mytable VALUES ( 1 , '$name') "

Perhatikan bahwa meskipun kueri diapit di antara tanda kutip ganda, Anda harus menyertakan string apa pun dalam tanda kutip tunggal.

ShoushouLeb
sumber
Terima kasih. Saya mencoba mencari tahu mengapa kueri saya di PHP tidak berfungsi, yang harus saya lakukan hanyalah menambahkan tanda kutip tunggal.
RiCHiE
1
Saya tahu ini adalah posting lama tetapi apakah Anda dapat menjawab mengapa Anda harus memberi tanda kutip?
RiCHiE
@RiCHiE biasanya lebih aman saat menggunakan string. Juga, lebih masuk akal bagi saya untuk meletakkan string di antara tanda kutip. Saat Anda menggunakan fungsi seperti SHA1, misalnya, Anda menempatkan tanda kutip di konten di dalamnya sepertiSHA1('$var')
George
Ini berhasil untuk saya. Pertama saya mencoba menggunakan backticks tanpa hasil.
radbyx
Harap lepas semua variabel yang diteruskan ke kueri dengan benar! Cukup gunakan $name = mysqli_real_escape_string($name)untuk menghindari kutipan dengan benar!
Le 'nton
16

Anda dapat memeriksa pilihan kutipan Anda (gunakan tanda kutip ganda / tunggal untuk nilai, string, dll dan tanda kutip untuk nama kolom).

Karena Anda hanya ingin memperbarui tabel, master_user_profilesaya merekomendasikan kueri bersarang:

UPDATE
   master_user_profile
SET
   master_user_profile.fellow = 'y'
WHERE
   master_user_profile.user_id IN (
      SELECT tran_user_branch.user_id
      FROM tran_user_branch WHERE tran_user_branch.branch_id = 17);
Tim Cooper
sumber
4

Dalam kasus saya, ini disebabkan oleh spasi tertinggal yang tidak terlihat di akhir nama kolom. Cukup periksa apakah Anda benar-benar menggunakan "y" atau "y" sebagai gantinya.

Aminah Nuraini
sumber
2

Saat mengerjakan aplikasi .Net yang dibangun dengan kode EF terlebih dahulu, saya mendapat pesan kesalahan ini ketika mencoba menerapkan migrasi saya di mana saya memiliki Sql("UPDATE tableName SET columnName = value");pernyataan.

Ternyata saya salah mengeja nama kolom.

Masterchief
sumber
1

Hanya berbagi pengalaman saya tentang ini. Saya mengalami masalah yang sama. Pernyataan masukkan atau perbarui sudah benar. Dan saya juga memeriksa pengkodeannya. Kolom tersebut memang ada. Kemudian! Saya menemukan bahwa saya mereferensikan kolom di Pemicu saya. Anda juga harus memeriksa pemicu Anda untuk melihat apakah ada skrip yang mereferensikan kolom yang bermasalah.

Dean Chiu
sumber
1

Hanya berbagi pengalaman saya tentang ini. Saya mengalami masalah yang sama. Kueri saya seperti:

select table1.column2 from table1

Namun, tabel1 tidak memiliki kolom2 kolom.

pengguna674669
sumber
0

Saya juga mendapat kesalahan yang sama, masalah dalam kasus saya adalah saya memasukkan nama kolom dalam GROUP BYklausa dan itu menyebabkan kesalahan ini. Jadi, hapus kolom dari GROUP BYklausa dan berhasil !!!

mannedear
sumber
0

Jika hibernasi dan JPA. periksa nama tabel yang Anda rujuk dan kolom mungkin tidak cocok

Poorna
sumber
0

Saya mendapat kesalahan ini saat menggunakan GroupBy melalui LINQ pada database MySQL. Masalahnya adalah bahwa properti objek anonim yang digunakan oleh GroupBy tidak cocok dengan nama kolom database. Diperbaiki dengan mengganti nama properti anonim agar sesuai dengan nama kolom.

.Select(f => new 
{
   ThisPropertyNameNeedsToMatchYourColumnName = f.SomeName
})
.GroupBy(t => t.ThisPropertyNameNeedsToMatchYourColumnName);
Abadi 21
sumber
0

Kueri seperti ini juga akan menyebabkan kesalahan:

SELECT table1.id FROM table2

Dimana tabel ditentukan dalam kolom pilih dan tidak termasuk dalam klausa from.

hogarth45
sumber