Ngôn ngữ SQL - UPDATE JOIN
SQL UPDATE với JOIN
Chúng ta sẽ cập nhật một bảng bằng cách sử dụng một bảng khác dùng điều kiện JOIN.
Ví dụ về một bảng khách hàng. Tôi đã cập nhật bảng khách hàng có chứa thông tin khách hàng mới nhất từ một hệ thống nguồn khác. Tôi muốn cập nhật bảng khách hàng với dữ liệu mới nhất. Trong trường hợp như vậy, tôi sẽ thực hiện nối giữa bảng mục tiêu và bảng nguồn bằng cách sử dụng phép nối trên ID khách hàng.
Xem cú pháp của truy vấn SQL UPDATE với câu lệnh JOIN:
UPDATE customer_table
INNER JOIN
Customer_table
ON customer_table.rel_cust_name = customer_table.cust_id
SET customer_table.rel_cust_name = customer_table.cust_name
Cách sử dụng nhiều bảng trong câu lệnh SQL UPDATE với JOIN.
Chúng ta có hai bảng, bảng 1 và bảng 2.
Tạo table1
CREATE TABLE table1 (column1 INT, column2 INT, column3 VARCHAR (100))
INSERT INTO table1 (col1, col2, col3)
SELECT 1, 11, 'FIRST'
UNION ALL
SELECT 11,12, 'SECOND'
UNION ALL
SELECT 21, 13, 'THIRD'
UNION ALL
SELECT 31, 14, 'FOURTH'
Tạo table2
CREATE TABLE table2 (column1 INT, column2 INT, column3 VARCHAR (100))
INSERT INTO table2 (col1, col2, col3)
SELECT 1, 21, 'TWO-ONE'
UNION ALL
SELECT 11, 22, 'TWO-TWO'
UNION ALL
SELECT 21, 23, 'TWO-THREE'
UNION ALL
SELECT 31, 24, 'TWO-FOUR'
Xem dữ liệu trong 2 bảng.
SELECT * FROM table_1
SELECT * FROM table_2
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | 11 | First |
2 | 11 | 12 | Second |
3 | 21 | 13 | Third |
4 | 31 | 14 | Fourth |
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | 21 | Two-One |
2 | 11 | 22 | Two-Two |
3 | 21 | 23 | Two-Three |
4 | 31 | 24 | Two-Four |
Chúng ta có bảng 2 có hai hàng trong đó Col 1 là 21 và 31. Chúng ta muốn cập nhật giá trị từ bảng 2 lên bảng 1 cho các hàng trong đó Col 1 là 21 và 31.
Chúng ta cũng chỉ muốn cập nhật giá trị của Col 2 và Col 3.
Cách dễ nhất và phổ biến nhất là sử dụng mệnh đề nối trong câu lệnh cập nhật và sử dụng nhiều bảng trong câu lệnh cập nhật.
UPDATE table 1
SET Col 2 = t2.Col2,
Col 3 = t2.Col3
FROM table1 t1
INNER JOIN table 2 t2 ON t1.Col1 = t2.col1
WHERE t1.Col1 IN (21,31)
SELECT FROM table 1
SELECT FROM table 2
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | 11 | First |
2 | 11 | 12 | Second |
3 | 21 | 23 | Two-Three |
4 | 31 | 24 | Two-Four |
Col 1 | Col 2 | Col 3 | |
---|---|---|---|
1 | 1 | 21 | First |
2 | 11 | 22 | Second |
3 | 21 | 23 | Two-Three |
4 | 31 | 24 | Two-Four |