Rumah >pangkalan data >tutorial mysql >Mengapa klausa WHERE tidak sah dalam pernyataan MySQL INSERT, dan apakah alternatifnya?

Mengapa klausa WHERE tidak sah dalam pernyataan MySQL INSERT, dan apakah alternatifnya?

Barbara Streisand
Barbara Streisandasal
2025-01-19 06:53:08785semak imbas

Why is a WHERE clause invalid in a MySQL INSERT statement, and what are the alternatives?

Pernyataan INSERT MySQL: Mengapa WHERE Klausa Tidak Sah dan Alternatif yang Sesuai

Pengenalan:

Penyataan

MySQL 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:

  • Memasukkan Baris Baharu dengan ID Unik: Jika 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>
  • Mengemas kini Baris Sedia Ada: Gunakan 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:

    Lajur
  • Automenaikkan id: Jika id naik secara automatik, anda boleh meninggalkannya daripada pernyataan INSERT; MySQL akan memberikan nilai secara automatik.
  • Sintaks
  • Alternatif 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn