Mysql cập nhật nhiều hàng với các điều kiện khác nhau

Bài viết này sẽ xem cách cập nhật nhiều hàng với các giá trị khác nhau của bảng MySQL trong một truy vấn. Chúng tôi sẽ minh họa khái niệm này bằng các ví dụ khác nhau

Hãy để chúng tôi bắt đầu bằng cách tạo dữ liệu mẫu. Chúng ta sẽ tạo một bảng, sale_person_data, sau đó chèn một vài hàng vào bảng đó

# create the table sale_person_data
CREATE TABLE sale_person_data (
    id INT ,
    sale_city VARCHAR(255) ,
    sale_person_name VARCHAR(255),
    no_products_sold INT,
    sales_department VARCHAR(255),
    reward_title VARCHAR(255)
);
# insert the data to sale_person_data
INSERT INTO sale_person_data (id,sale_city,sale_person_name,no_products_sold,sales_department) 
 VALUES(1,"Chicago","Henry",2000,"Kitchen Essentials"),
 (2,"Chicago","Henry",5000,"Apparels"),
 (3,"New York","Henry",40,"Medicines"),
 (4,"New York","Richa",3000,"Kitchen Essentials"),
 (5,"New York","Richa",500,"Apparels"),
 (6,"New York","Richa",50,"Medicines"),
 (7,"Boston","Ved",100,"Kitchen Essentials"),
 (8,"Boston","Ved",150,"Apparels"),
 (9,"Boston","Ved",1000,"Medicines"),
 (10,"New York","George",600,"Kitchen Essentials"),
 (11,"Boston","George",1200,"Apparels"),
 (12,"Boston","George",200,"Medicines"),
 (13,"Chicago","Alexendra",487,"Kitchen Essentials"),
 (14,"Chicago","Alexendra",570,"Apparels"),
 (15,"New York","Alexendra",510,"Medicines"),
 (16,"New York","Gustav",3000,"Kitchen Essentials"),
 (17,"Chicago","Gustav",100,"Apparels"),
 (18,"New York","Gustav",150,"Medicines");

Thực hiện select * để xem dữ liệu trong bảng_sale_person_data

SELECT * FROM sale_person_data;

đầu ra. -

Mysql cập nhật nhiều hàng với các điều kiện khác nhau
hình ảnh1. sale_person_data

Như chúng ta có thể thấy trong hình ảnh 1, cột reward_title trống.  

quảng cáo

Ví dụ1. Cập nhật nhiều hàng trong bảng sale_person_data sao cho cột bonus_title được cập nhật giá trị dựa trên các điều kiện bên dưới.

Điều kiệngiá trị_tiêu đề_phần thưởng no_products_sold > 500 bộ phận_bán hàng là and sales_department is ‘Apparels’‘The Eccentric Performer’no_products_sold > 500 and sales_department is ‘Medicines’‘Go That Extra Mile’table1

Quan sát truy vấn dưới đây cho giải pháp

UPDATE sale_person_data 
SET 
    reward_title = CASE
        WHEN
            sales_department = 'Kitchen Essentials'
                AND no_products_sold > 500
        THEN
            'Achiever of the Month'
        WHEN
            sales_department = 'Apparels'
                AND no_products_sold > 500
        THEN
            'The Eccentric Performer'
        WHEN
            sales_department = 'Medicines'
                AND no_products_sold > 500
        THEN
            'Go That Extra Mile'
    END
;

Đầu ra hành động. -

Mysql cập nhật nhiều hàng với các điều kiện khác nhau
hình ảnh_2

Đầu ra hành động trong image_2 cho thấy 9 hàng bị ảnh hưởng. Bây giờ chúng ta hãy xem liệu 9 hàng này đã được cập nhật bằng cách thực thi chưa

 SELECT * FROM sale_person_data;

đầu ra. -

Mysql cập nhật nhiều hàng với các điều kiện khác nhau
hình ảnh_3

Kết quả trong image_3 cho thấy rằng nhiều hàng đã được cập nhật trong bảng sale_person_data và các giá trị khác nhau cho cột reward_title cũng được cập nhật

Ví dụ2. Cập nhật nhiều hàng trong bảng sale_person_data sao cho cột “reward_title” chỉ được cập nhật cho các thành phố ‘Chicago’ hoặc ‘New York’ với các giá trị dựa trên các điều kiện bên dưới.

Điều kiệngiá trị_tiêu đề_phần thưởng no_products_sold > 500 bộ phận_bán hàng là and sales_department is ‘Apparels’‘The Eccentric Performer’no_products_sold > 500 and sales_department is ‘Medicines’‘Go That Extra Mile’table1

Lưu ý rằng chúng tôi sẽ đặt lại phần thưởng_title thành NULL trước khi tiếp tục cho rõ ràng

UPDATE sale_person_data SET reward_title = NULL;

Quan sát truy vấn bên dưới để biết giải pháp theo yêu cầu của ví dụ2

UPDATE sale_person_data 
SET 
    reward_title = CASE
        WHEN
            sales_department = 'Kitchen Essentials'
                AND no_products_sold > 500
        THEN
            'Achiever of the Month'
        WHEN
            sales_department = 'Apparels'
                AND no_products_sold > 500
        THEN
            'The Eccentric Performer'
        WHEN
            sales_department = 'Medicines'
                AND no_products_sold > 500
        THEN
            'Go That Extra Mile'
       END
WHERE sale_city IN ("Chicago", "New York");

Đầu ra hành động. -

Mysql cập nhật nhiều hàng với các điều kiện khác nhau
hình ảnh_4

Đầu ra hành động trong image_4 cho thấy 7 hàng bị ảnh hưởng. Bây giờ chúng ta hãy xem 7 hàng này đã được cập nhật bằng cách thực thi chưa

 SELECT * FROM sale_person_data;

đầu ra. -

Mysql cập nhật nhiều hàng với các điều kiện khác nhau
hình ảnh_5

Kết quả trong image_5 cho thấy 7 hàng được cập nhật trong bảng sale_person_data khớp với các điều kiện nêu trên

Ví dụ3. Cập nhật nhiều hàng trong bảng sale_person_data sao cho thành phố phải là Santiago cho bộ phận bán hàng 'Đồ dùng nhà bếp' và 'Quần áo'

Quan sát truy vấn dưới đây cho giải pháp

UPDATE sale_person_data 
SET 
    sale_city = 'Santiago'
WHERE
    sales_department IN ('Kitchen Essentials' , 'Apparels');

Đầu ra hành động. -

Mysql cập nhật nhiều hàng với các điều kiện khác nhau
hình ảnh_6

Đầu ra hành động trong image_6 cho thấy 12 hàng bị ảnh hưởng. Bây giờ chúng ta hãy xem liệu 12 hàng này đã được cập nhật hay chưa bằng cách thực thi

Làm cách nào để CẬP NHẬT nhiều hàng trong SQL với các giá trị khác nhau?

Đầu tiên, chỉ định tên bảng mà bạn muốn thay đổi dữ liệu trong mệnh đề CẬP NHẬT. Thứ hai, gán một giá trị mới cho cột mà bạn muốn cập nhật. Trường hợp bạn muốn cập nhật dữ liệu theo nhiều cột thì mỗi cặp cột = giá trị cách nhau bởi dấu phẩy (,). Thứ ba, chỉ định những hàng bạn muốn cập nhật trong mệnh đề WHERE

Chúng tôi có thể CẬP NHẬT nhiều hàng trong mysql không?

Chúng ta có thể cập nhật nhiều hàng của bảng bằng một lệnh cập nhật duy nhất .

Tôi có thể CẬP NHẬT cùng một cột với các giá trị SQL khác nhau không?

Một cột không thể được chỉ định nhiều hơn một giá trị trong cùng một mệnh đề . Sửa đổi mệnh đề để đảm bảo rằng một cột chỉ được cập nhật một lần.