Trong hướng dẫn này, chúng ta sẽ xem xét các cách khác nhau để cập nhật các hàng trong bảng bằng cách sử dụng SQL theo tiến trình từ các bản cập nhật chung hơn đến các phương pháp cụ thể hơn.
Cập nhật đầy đủ
Nếu mọi trường cần được cập nhật thành cùng một giá trị, bạn có thể thực hiện việc đó bằng cách sử dụng UPDATE
đơn giản lệnh.
UPDATE table
SET col = new_value;
Cập nhật có điều kiện
Để thực hiện cập nhật có điều kiện tùy thuộc vào việc giá trị hiện tại của cột có khớp với điều kiện hay không, bạn có thể thêm WHERE
mệnh đề chỉ định điều này. Cơ sở dữ liệu trước tiên sẽ tìm các hàng phù hợp với WHERE
và sau đó chỉ thực hiện cập nhật trên các hàng đó.
UPDATE table
SET col = new_value
WHERE col = old_value;
Để mở rộng điều này, bạn có thể thêm bất kỳ thứ gì vào WHERE
mệnh đề bạn thích miễn là nó là một biểu thức hợp lệ. Vì vậy, để thực hiện cập nhật dựa trên giá trị của một cột khác trong cùng một bảng, bạn có thể thực hiện như sau:
UPDATE table
SET col = new_value
WHERE other_col = some_other_value;
Kể từ WHERE
mệnh đề có thể chứa bất kỳ biểu thức hợp lệ nào, bạn cũng có thể thực hiện cập nhật trong đó nhiều cột đáp ứng tiêu chí
UPDATE table
SET col = new_value
WHERE col = old_value
AND other_col = some_other_value;
UPDATE table
SET col = new_value
WHERE col = old_value
OR other_col = some_other_value;
Như bạn thấy, bạn có thể mở rộng WHERE
tùy thích để lọc ra các hàng để cập nhật những gì bạn cần.
Bây giờ điều gì xảy ra nếu bạn muốn cập nhật các hàng trong một bảng dựa trên điều kiện của một bảng khác? Câu hỏi này dẫn đến một số cách khác nhau mà bạn có thể thực hiện.
Kể từ WHERE
mệnh đề có thể chứa bất kỳ biểu thức hợp lệ nào, bạn có thể sử dụng truy vấn con:
UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);
Bạn cũng có thể sử dụng một truy vấn con trong SET
phần của câu lệnh nếu bạn muốn đặt cột thành một giá trị trong bảng khác
UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);
Có lẽ một cách dễ dàng hơn là chỉ định nhiều bảng sau UPDATE
mệnh đề. Chỉ SET
biểu thức sẽ thực hiện cập nhật nhưng việc liệt kê các bảng bổ sung sẽ cho phép đưa các bảng vào.
UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;
Tương tự như mở rộng WHERE
, số lượng bảng có thể được mở rộng để bao gồm tất cả các bảng bạn cần nếu bạn có nhiều bảng cần được nối với nhau.