Saya melakukan kueri penyisipan di mana sebagian besar dari banyak kolom perlu diperbarui ke nilai baru jika kunci unik sudah ada. Ini berjalan seperti ini:
INSERT INTO lee(exp_id, created_by,
location, animal,
starttime, endtime, entct,
inact, inadur, inadist,
smlct, smldur, smldist,
larct, lardur, lardist,
emptyct, emptydur)
SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct,
t.inact, t.inadur, t.inadist,
t.smlct, t.smldur, t.smldist,
t.larct, t.lardur, t.lardist,
t.emptyct, t.emptydur
FROM tmp t WHERE uid=x
ON DUPLICATE KEY UPDATE ...;
//update all fields to values from SELECT,
// except for exp_id, created_by, location, animal,
// starttime, endtime
Saya tidak yakin seperti apa sintaks untuk UPDATE
klausa tersebut. Bagaimana cara saya merujuk ke baris saat ini dari SELECT
klausa?
mysql
insert-update
dnagirl.dll
sumber
sumber
t.
diperlukan. Saya juga menemukan sebuah artikel tentang xaprb ( xaprb.com/blog/2006/02/21/flexible-insert-and-update-in-mysql ) yang menggunakan sintaks ini:on duplicate key update b = values(b), c = values(c)
. Ini juga berhasil.Meskipun saya sangat terlambat untuk ini tetapi setelah melihat beberapa pertanyaan yang sah bagi mereka yang ingin menggunakan
INSERT-SELECT
query denganGROUP BY
klausa, saya menemukan solusi untuk ini.Mengambil lebih jauh jawaban dari Marcus Adams dan akuntansi
GROUP BY
di dalamnya, inilah cara saya memecahkan masalah dengan menggunakanSubqueries in the FROM Clause
sumber