Tôi đã tìm kiếm xung quanh nhưng không tìm thấy nếu có thể.
Tôi đã truy vấn MySQL này:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
Id trường có một "chỉ mục duy nhất", vì vậy không thể có hai trong số chúng. Bây giờ nếu cùng một id đã có trong cơ sở dữ liệu, tôi muốn cập nhật nó. Nhưng tôi có thực sự phải xác định lại tất cả các lĩnh vực này không, như:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8
Hoặc là:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g)
Tôi đã chỉ định mọi thứ đã có trong phần chèn ...
Một lưu ý thêm, tôi muốn sử dụng công việc xung quanh để nhận ID!
id=LAST_INSERT_ID(id)
Tôi hy vọng ai đó có thể cho tôi biết cách hiệu quả nhất là gì.
a=VALUES(a), b=VALUES(b), ...
là cách bạn cần đi. Đó là cách tôi làm điều đó cho tất cả cácINSERT ON DUPLICATE KEY UPDATE
tuyên bố của mình .