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

Cập nhật trường với GROUP BY trong MySQL

Giới thiệu

MySQL không hỗ trợ trực tiếp mệnh đề GROUP BY trong câu lệnh UPDATE. Tuy nhiên, bạn có thể đạt được hiệu quả tương tự bằng cách sử dụng ORDER BY ... LIMIT để cập nhật một bản ghi cụ thể trong nhóm.

Ví dụ minh họa

Bước 1: Tạo bảng

CREATE TABLE DemoTable2018 (
    EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    EmployeeName VARCHAR(20),
    EmployeeSalary INT
);

Bước 2: Chèn dữ liệu mẫu

INSERT INTO DemoTable2018 (EmployeeName, EmployeeSalary) VALUES ('Chris', 10000);
INSERT INTO DemoTable2018 (EmployeeName, EmployeeSalary) VALUES ('David', 12560);
INSERT INTO DemoTable2018 (EmployeeName, EmployeeSalary) VALUES ('Chris', 25400);

Bước 3: Xem dữ liệu ban đầu

SELECT * FROM DemoTable2018;
+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1          | Chris        | 10000          |
| 2          | David        | 12560          |
| 3          | Chris        | 25400          |
+------------+--------------+----------------+

Bước 4: Cập nhật lương cho bản ghi đầu tiên của 'Chris' (theo EmployeeId)

UPDATE DemoTable2018
SET EmployeeSalary = EmployeeSalary + 2500
WHERE EmployeeName = 'Chris'
ORDER BY EmployeeId LIMIT 1;

Bước 5: Kiểm tra lại

SELECT * FROM DemoTable2018;
+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1          | Chris        | 12500          |
| 2          | David        | 12560          |
| 3          | Chris        | 25400          |
+------------+--------------+----------------+

Giải thích: Mệnh đề ORDER BY EmployeeId LIMIT 1 đảm bảo chỉ bản ghi có EmployeeId nhỏ nhất (đầu tiên) của 'Chris' được cập nhật. Đây là kỹ thuật thường dùng khi cần cập nhật một hàng đại diện cho một nhóm.