Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách cập nhật một cột dựa trên bộ lọc của một cột khác

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL là gì?

  2. Mức cô lập SNAPSHOT

  3. Các vấn đề về hiệu suất:Cuộc gặp gỡ đầu tiên

  4. Bạn không thích trình kích hoạt cơ sở dữ liệu? Bạn chỉ không biết cách làm việc với chúng!

  5. Cách thay đổi cột từ NULL thành NOT NULL