Rumah >pangkalan data >tutorial mysql >Mengapa klausa WHERE tidak sah dalam pernyataan MySQL INSERT, dan apakah alternatifnya?
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:
<code class="language-sql">INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;</code>
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:
<code class="language-sql">INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );</code>
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:<code class="language-sql">INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);</code>
UPDATE
untuk mengubah suai rekod sedia ada:<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
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:<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;</code>
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:<code class="language-sql"> 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.</code>
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!