Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL UPDATE với toán tử AND

Cập nhật có điều kiện phức hợp

Sử dụng toán tử logic AND trong mệnh đề SET hoặc WHERE của câu lệnh UPDATE.

Ví dụ

Tạo bảng:

CREATE TABLE DemoTable613 (
    Id INT,
    Age INT,
    isMarried TINYINT(1)
);
INSERT INTO DemoTable613 VALUES
(100, 29, 0),
(200, 22, 0),
(300, 30, 1);

Cập nhật isMarried = TRUE chỉ khi Age = 29 AND Id = 100:

UPDATE DemoTable613
SET isMarried = (Age = 29 AND Id = 100);

Kết quả:

+------+------+-----------+
| Id   | Age  | isMarried |
+------+------+-----------+
| 100  | 29   | 1         |
| 200  | 22   | 0         |
| 300  | 30   | 0         |
+------+------+-----------+

Giải thích

  • Biểu thức (Age = 29 AND Id = 100) trả về boolean (1 = TRUE, 0 = FALSE).
  • MySQL cho phép gán trực tiếp boolean vào cột numeric (TINYINT).
  • Tất cả các dòng đều được evaluate, nhưng chỉ dòng thỏa mãn 2 điều kiện mới nhận giá trị 1.

Cách viết thay thế (cổ điển)

UPDATE DemoTable613
SET isMarried = 1
WHERE Age = 29 AND Id = 100;

-- Các dòng khác giữ nguyên (hoặc set 0 nếu cần)
UPDATE DemoTable613
SET isMarried = 0
WHERE NOT (Age = 29 AND Id = 100);

So sánh

CáchƯu điểmNhược điểm
SET = (condition)1 câu lệnh, atomic, ngắn gọnKhó đọc với logic phức tạp
WHERE conditionRõ ràng, chuẩn SQL, dễ debugCần 2 câu lệnh nếu muốn set cả TRUE và FALSE
CASE WHENLinh hoạt nhiều nhánhVerbose

Lưu ý

  • Luôn test với SELECT trước khi UPDATE.
  • Sử dụng transaction cho batch update quan trọng.
  • Index trên cột trong WHERE để tăng tốc.