Pernyataan INSERT MySQL: Mengapa WHERE Klausa Tidak Sah dan Alternatif yang Sesuai
Pengenalan:
PenyataanMySQL INSERT
menambah baris baharu pada jadual. Ralat biasa ialah menggunakan klausa WHERE
dalam pernyataan INSERT
, yang secara sintaksis tidak betul. Artikel ini menerangkan ralat dan menyediakan alternatif yang berkesan.
Pertanyaan dan Penjelasan Salah:
Pertanyaan berikut tidak sah:
INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
Ini cuba untuk memasukkan nilai ke dalam Users
hanya jika baris dengan id = 1
wujud. Kenyataan INSERT
MySQL tidak menyokong klausa WHERE
; ia direka untuk sisipan tanpa syarat.
Sintaks INSERT MySQL yang betul:
Sintaks INSERT
standard ialah:
INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );
Klausa WHERE
digunakan secara eksklusif dalam pernyataan SELECT
, UPDATE
dan DELETE
.
Pendekatan Alternatif:
Untuk mencapai sisipan atau kemas kini bersyarat, pertimbangkan pilihan ini:
id
ialah kunci utama atau kekangan unik, cuma masukkan baris baharu:INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
UPDATE
untuk mengubah suai rekod sedia ada:UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
INSERT ... ON DUPLICATE KEY UPDATE
: Ini menggabungkan sisipan dan kemas kini. Jika kunci pendua ditemui (cth., id
sedia ada), baris dikemas kini; jika tidak, baris baharu dimasukkan:INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;
Pertimbangan Penting:
id
: Jika id
naik secara automatik, anda boleh meninggalkannya daripada pernyataan INSERT
; MySQL akan memberikan nilai secara automatik.INSERT ... ON DUPLICATE KEY UPDATE
: Di atas juga boleh ditulis sebagai:INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145; ``` This form is useful when updating only some columns.
Atas ialah kandungan terperinci Mengapa klausa WHERE tidak sah dalam pernyataan MySQL INSERT, dan apakah alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!