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
Lepaskan: 2025-01-19 06:53:08
asal
774 orang telah melayarinya

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:

INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
Salin selepas log masuk

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, ... );
Salin selepas log masuk

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:
INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
Salin selepas log masuk
  • Mengemas kini Baris Sedia Ada: Gunakan UPDATE untuk mengubah suai rekod sedia ada:
UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
Salin selepas log masuk
  • 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;
Salin selepas log masuk

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:
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.
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan