tôi muốn làm một cái gì đó như thế nàyINSERT INTO .. ON DUPLICATE CẬP NHẬT KEY cho nhiều mục
INSERT INTO t (t.a, t.b, t.c)
VALUES ('key1','key2','value')
ON DUPLICATE KEY UPDATE
t.c = 'value';
INSERT INTO t (t.a, t.b, t.c)
VALUES ('key1','key3','value2')
ON DUPLICATE KEY UPDATE
t.c = 'value2';
t.a và t.b là chìa khóa. Điều này tất cả các công trình tốt nhưng tôi nhận được một lỗi trên chèn thứ hai. Với phpMyAdmin một truy vấn như thế này hoạt động tốt nhưng tôi đoán nó chạy các truy vấn một cách độc lập vì nó in ra các kết quả từ truy vấn đó như ý kiến?
Một cái gì đó như thế này cũng sẽ tốt nhưng tôi sẽ cần phải có các giá trị khác nhau cho mỗi mục. Tôi thích điều này nhưng tôi không chắc chắn làm thế nào tôi có thể thay đổi giá trị trên cập nhật cho mỗi giá trị.
INSERT INTO t (t.a, t.b, t.c)
VALUES ('key1','key2','value'), ('key1','key3','value2')
ON DUPLICATE KEY UPDATE
t.c = ???
Vấn đề nằm trong dấu hỏi, tôi nên đặt gì ở đây để mỗi lần chèn/cập nhật sẽ có giá trị chính xác? Rõ ràng nếu tôi đặt một giá trị ở đó tất cả các trường sẽ nhận được giá trị đó.
Nếu có một cách khác để thực hiện "cập nhật nếu tồn tại, nếu không chèn" truy vấn trên nhiều trường bằng hai khóa, tôi cũng sẽ đưa ra các ý tưởng khác. Tôi đoán tôi có thể chạy mỗi truy vấn riêng biệt (như phpMyAdmin?) Nhưng nó sẽ có rất nhiều truy vấn vì vậy tôi thực sự muốn tránh điều đó.
Tuyệt vời! Và damn bạn SQL cho được như vậy damn unintuitive ... – pixelfreak
mysql INSERT INTO param (id, num) GIÁ TRỊ (3,4) TRÊN KHIẾU NẠI CHÍNH CẬP NHẬT id = GIÁ TRỊ ( d) +222; Truy vấn OK, 2 hàng bị ảnh hưởng (0,67 giây) – zloctb