Rumah > Soal Jawab > teks badan
P粉3389695672023-08-30 10:05:32
Penyelesaian:
INSERT INTO `table` (`value1`, `value2`) SELECT 'stuff for value1', 'stuff for value2' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `table` WHERE `value1`='stuff for value1' AND `value2`='stuff for value2' LIMIT 1)
Arahan:
Pertanyaan paling dalam
SELECT * FROM `table` WHERE `value1`='stuff for value1' AND `value2`='stuff for value2' LIMIT 1
digunakan sebagai WHERE NOT EXISTS
条件,检测是否已存在包含要插入数据的行。找到此类的一行后,查询可能会停止,因此LIMIT 1
(pengoptimuman mikro, boleh diabaikan).
Pertanyaan perantaraan
SELECT 'stuff for value1', 'stuff for value2' FROM DUAL
mewakili nilai yang akan dimasukkan. DUAL
是指所有 Oracle 数据库中默认存在的一种特殊的单行单列表(请参阅 https://en.wikipedia.org/wiki/DUAL_table)。在 MySQL-Server 版本 5.7.26 上,当省略 FROM DUAL
时,我得到了有效的查询,但旧版本(如 5.5.60)似乎需要 FROM
信息。通过使用 WHERE NOT EXISTS
, jika pertanyaan paling dalam menemui data yang sepadan, pertanyaan tengah akan mengembalikan set hasil kosong.
Pertanyaan luaran
INSERT INTO `table` (`value1`, `value2`)
Masukkan data (jika pertanyaan perantaraan mengembalikan sebarang data).
P粉5210131232023-08-30 00:40:11
Gunakan INSERT IGNORE INTO table
.
Terdapat juga INSERT … ON DUPLICATE KEY UPDATE
sintaks yang anda boleh gunakan dalam 13.2.6.2 INSERT ... PADA penyataan KEMASKINI KUNCI DUA .
Siaran daripada bogdan.org.ua Berdasarkan cache web Google: