Bạn có thể cập nhật nhiều hàng trong MySQL không?

Bạn sẽ cần phải viết các điều kiện rất phức tạp nếu bạn muốn cập nhật nhiều hơn hai hàng. Trong trường hợp như vậy, bạn có thể sử dụng phương pháp INSERT .. ON DUPLICATE KEY UPDATE

INSERT into `mytable` (id, fruit, drink, food)
VALUES
    (1, 'orange', 'water', 'pizza'),
    (2, 'strawberry', 'wine', 'fish'),
    (3, 'peach', 'jiuce', 'cake')
ON DUPLICATE KEY UPDATE
    fruit = VALUES(fruit), 
    drink = VALUES(drink), 
    food = VALUES(food);

Để cập nhật nhiều hàng trong một cột, hãy sử dụng câu lệnh CASE. Trước tiên chúng ta hãy tạo một bảng -

mysql> create table updateMultipleRowsDemo
   -> (
   -> StudentId int,
   -> StudentMathScore int
   -> );
Query OK, 0 rows affected (0.63 sec)

Sau đây là truy vấn để chèn các bản ghi vào bảng bằng cách sử dụng lệnh chèn -

mysql> insert into updateMultipleRowsDemo values(10001,67);
Query OK, 1 row affected (0.14 sec)
mysql> insert into updateMultipleRowsDemo values(10002,69);
Query OK, 1 row affected (0.15 sec)
mysql> insert into updateMultipleRowsDemo values(10003,89);
Query OK, 1 row affected (0.14 sec)
mysql> insert into updateMultipleRowsDemo values(10004,99);
Query OK, 1 row affected (0.13 sec)
mysql> insert into updateMultipleRowsDemo values(10005,92);
Query OK, 1 row affected (0.13 sec)

Sau đây là truy vấn để hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select -

mysql> select * from updateMultipleRowsDemo;

Điều này sẽ tạo ra đầu ra sau -

+-----------+------------------+
| StudentId | StudentMathScore |
+-----------+------------------+
| 10001     | 67               |
| 10002     | 69               |
| 10003     | 89               |
| 10004     | 99               |
| 10005     | 92               |
+-----------+------------------+
5 rows in set (0.00 sec)

Đây là truy vấn để cập nhật nhiều hàng trong một cột trong MySQL -

mysql> UPDATE updateMultipleRowsDemo
   -> SET StudentMathScore= CASE StudentId
   -> WHEN 10001 THEN 45
   -> WHEN 10002 THEN 52
   -> WHEN 10003 THEN 67
   -> END
   -> WHERE StudentId BETWEEN 10001 AND 10003;
Query OK, 3 rows affected (0.19 sec)
Rows matched: 3 Changed: 3 Warnings: 0

Hãy để chúng tôi kiểm tra giá trị được cập nhật hay không -

mysql> select * from updateMultipleRowsDemo;

Điều này sẽ tạo ra đầu ra sau

+-----------+------------------+
| StudentId | StudentMathScore |
+-----------+------------------+
| 10001     | 45               |
| 10002     | 52               |
| 10003     | 67               |
| 10004     | 99               |
| 10005     | 92               |
+-----------+------------------+
5 rows in set (0.00 sec)

Bạn có thể cập nhật nhiều hàng trong MySQL không?


Bạn có thể cập nhật nhiều hàng trong MySQL không?

Trong bài tập này, chúng ta sẽ học cách cập nhật nhiều hàng với các giá trị khác nhau trong một truy vấn. Giả sử chúng tôi có hồ sơ nhân viên sau và chúng tôi muốn cập nhật số điện thoại của một số nhân viên -

CREATE TABLE IF NOT EXISTS `empdata` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(25) NOT NULL,
  `email` varchar(100) NOT NULL,
  `phone` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
INSERT INTO `empdata` (`id`, `name`, `email`, `phone`) VALUES
(1, 'Anjali', This email address is being protected from spambots. You need JavaScript enabled to view it.', 878433948),
(2, 'Priska', This email address is being protected from spambots. You need JavaScript enabled to view it.', 493905490),
(3, 'Abhi', This email address is being protected from spambots. You need JavaScript enabled to view it.', 403022139),
(4, 'Joya', This email address is being protected from spambots. You need JavaScript enabled to view it.', 342345329),
(5, 'Ammy', This email address is being protected from spambots. You need JavaScript enabled to view it.', 239848342),
(6, 'Lussi', This email address is being protected from spambots. You need JavaScript enabled to view it.', 490290331);

Cách tốt nhất để cập nhật nhiều hàng chỉ trong một câu lệnh là sử dụng câu lệnh CASE WHEN ELSE. Trong trường hợp này, câu lệnh sẽ cập nhật trường hợp khớp và kết thúc theo cách khác, như-

UPDATE 'table_name' 
SET 'field_name' = CASE 'id'
WHEN '1' THEN 'value 1'
WHEN '2' THEN 'value 2'
WHEN '3' THEN 'value 3'
ELSE 'field_name'
END

Ở đây, 'table_name' là tên bảng MySQL, 'field_name' là tên cột

Truy vấn cập nhật để cập nhật số điện thoại của một số nhân viên như sau -

UPDATE empdata SET phone = CASE 
WHEN id=1 THEN '840932345'
WHEN id=2 THEN '890040908'
WHEN id=3 THEN '675748389'
WHEN id=6 THEN '909030309'
ELSE phone
END;

hãy kiểm tra dữ liệu cập nhật -

SELECT * FROM 'empdata';
+----+--------+--------------------+-----------+
| id | name   | email              | phone     |
+----+--------+--------------------+-----------+
|  6 | Lussi  | This email address is being protected from spambots. You need JavaScript enabled to view it.  | 909030309 |
|  4 | Joya   | This email address is being protected from spambots. You need JavaScript enabled to view it.   | 342345329 |
|  5 | Ammy   | This email address is being protected from spambots. You need JavaScript enabled to view it.   | 239848342 |
|  2 | Priska | This email address is being protected from spambots. You need JavaScript enabled to view it. | 890040908 |
|  3 | Abhi   | This email address is being protected from spambots. You need JavaScript enabled to view it.   | 675748389 |
|  1 | Anjali | This email address is being protected from spambots. You need JavaScript enabled to view it. | 840932345 |
+----+--------+--------------------+-----------+

Bài tập MySQL liên quan

MySQL nối
MySQL Nhận ngày hiện tại, người dùng, phiên bản
MySQL Nhận giá trị tối đa
Quản trị viên MySQL
mệnh đề mysql where
Thứ tự MySQL theo
MySQL nhận được sự khác biệt giữa hai ngày
Kết hợp mẫu MySQL
MySQL tham gia
Biểu thức chính quy MySQL
MySQL xóa hàng trùng lặp
Nhận mức lương cao thứ n khi sử dụng MySQL
Hiển thị hàng thứ n từ MySQL
Cam kết và khôi phục trong mysql
MySQL CHỌN top 5
MySQL hiển thị các hàng thay thế

Có thể CẬP NHẬT trong SQL CẬP NHẬT nhiều hàng không?

Chúng ta có thể cập nhật nhiều hàng của bảng bằng cách sử dụng lệnh cập nhật đơn lẻ .

Làm cách nào để CẬP NHẬT nhiều mục nhập trong MySQL?

Lệnh MySQL UPDATE có thể được sử dụng để cập nhật nhiều cột bằng cách chỉ định danh sách cột_name = new_value được phân tách bằng dấu phẩy . Trong đó column_name là tên của cột sẽ được cập nhật và new_value là giá trị mới mà cột sẽ được cập nhật.

Làm cách nào tôi có thể CẬP NHẬT nhiều hàng của một cột trong SQL?

Các giá trị cột trên nhiều hàng có thể được cập nhật trong một câu lệnh CẬP NHẬT nếu điều kiện được chỉ định trong mệnh đề WHERE khớp với nhiều hàng . Trong trường hợp này, mệnh đề SET sẽ được áp dụng cho tất cả các hàng khớp.

Bạn có thể CẬP NHẬT trên nhiều bảng trong MySQL không?

Trong MYSQL, chúng ta có thể cập nhật nhiều bảng trong một truy vấn CẬP NHẬT duy nhất . Trong truy vấn bên dưới, cả hai bảng 'order' và 'order_detail' đều được cập nhật cùng một lúc.