Trừ khi bạn sẵn sàng sao chép một giá trị như Igoel đề xuất (có thể không lý tưởng nếu giá trị đó dài dòng), câu trả lời đơn giản là không .
Một khả năng đáng khuyến khích ngắn gọn là sử dụng bí danh NEW
đại diện cho các giá trị đến, để giá trị cuối cùng có thể được nhân đôi mà không thực sự phải trình bày lại nó trong truy vấn (và tôi hy vọng rằng điều này sẽ được trình tối ưu hóa truy vấn loại bỏ):
UPDATE `myTable` SET
`Field1` = "value",
`Field2` = "value",
`Field3` = "value",
--- `Field3` = NEW.`Field3`
WHERE `Field4` = "value";
Than ôi, điều này không được hỗ trợ trong UPDATE
, chỉ bên trong thân trình kích hoạt.
Bạn sẽ phải thực hiện thao tác trong C ++ của mình trước khi thực hiện câu lệnh, thông qua thay thế ký tự (,
cho ) hoặc loại bỏ ký tự; cái trước có thể tạo ra mã phức tạp hơn hiện tại của bạn và cái sau có thể không hiệu quả (tùy thuộc vào cấu trúc của mã xây dựng truy vấn của bạn), nhưng đó vẫn là lựa chọn tốt nhất của bạn.