Pelbagai kemas kini dalam MySQL
P粉154798196
P粉154798196 2024-03-25 16:21:20
0
2
519

Saya tahu anda boleh memasukkan berbilang baris sekaligus, adakah cara untuk mengemas kini berbilang baris sekaligus (seperti dalam satu pertanyaan) dalam MySQL?

Sunting: Sebagai contoh saya mempunyai yang berikut

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8

Saya ingin menggabungkan semua kemas kini berikut menjadi satu pertanyaan

UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;

P粉154798196
P粉154798196

membalas semua(2)
P粉404539732

Memandangkan anda mempunyai nilai dinamik, anda perlu menggunakan IF atau CASE untuk mengemas kini lajur. Ia menjadi sedikit hodoh, tetapi ia sepatutnya berfungsi.

Menggunakan contoh anda, anda boleh melakukan ini:

UPDATE table SET Col1 = CASE id 
                          WHEN 1 THEN 1 
                          WHEN 2 THEN 2 
                          WHEN 4 THEN 10 
                          ELSE Col1 
                        END, 
                 Col2 = CASE id 
                          WHEN 3 THEN 3 
                          WHEN 4 THEN 12 
                          ELSE Col2 
                        END
             WHERE id IN (1, 2, 3, 4);
P粉536909186

Ya, mungkin - anda boleh menggunakan INSERT ... PADA KEMASKINI KUNCI DUA.

Gunakan contoh anda:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan