Chúng tôi có bảng Geek2 có hai hàng trong đó Col 1 là 21 & 31 và chúng tôi muốn cập nhật giá trị từ bảng Geek2 sang bảng Geek1 cho các hàng trong đó Col 1 là 21 và 31. Ngoài ra, chúng tôi chỉ muốn cập nhật các giá trị của Col 2 và Col 3
Trong các phiên bản mới nhất của MySQL, bạn có thể thực hiện cập nhật bảng chéo, còn được gọi là cập nhật bảng tương quan nơi bạn có thể nối hai hoặc nhiều bảng. Sử dụng truy vấn MySQL THAM GIA [INNER và LEFT] và CẬP NHẬT, chúng tôi có thể thực hiện cập nhật bảng chéo theo các bước rất đơn giản
Hướng dẫn này sẽ hướng dẫn bạn cách thực hiện cập nhật bảng chéo MySQL bằng cách sử dụng các lệnh MySQL gốc
Cú pháp cơ bản
Cú pháp chung cho truy vấn tham gia cập nhật MySQL cơ bản là
CẬP NHẬT db. bảng1, db. bảng2,
[TRÁI THAM GIA. INNER THAM GIA] db. bảng1 TRÊN db. Bảng 1. cột1 = db. ban 2. cột2
SET db. Bảng 1. cột2 = db. ban 2. cột2, db. ban 2. cột3 = Biểu thức
WHERE [điều kiện]
Hãy chia truy vấn trên thành các phần nhỏ hơn để chúng ta có thể hiểu rõ hơn
Chúng tôi bắt đầu bằng cách xác định bảng chính. Trong trường hợp này, [db. table1] theo sau là bảng chúng tôi muốn tham gia bằng cách sử dụng câu lệnh cập nhật, trong trường hợp này là db. ban 2
GHI CHÚ. Điều quan trọng là chỉ định ít nhất một bảng sau câu lệnh cập nhật;
Trong phần thứ hai của truy vấn, chúng tôi chỉ định loại THAM GIA cụ thể mà chúng tôi muốn thực hiện, tôi. e. , INNER hoặc LEFT JOIN và một vị từ nối. Luôn đặt truy vấn THAM GIA ngay sau truy vấn CẬP NHẬT
Vị từ nối là một điều kiện THAM GIA cụ thể đánh giá thành một giá trị Boolean
Trong phần sau, chúng tôi đặt giá trị mới cho các cột của db. bảng1 và db. ban 2
Cuối cùng, chúng tôi đặt điều kiện bằng cách sử dụng mệnh đề WHERE, giúp giới hạn các hàng trải qua quá trình cập nhật
Trường hợp sử dụng ví dụ
Giả sử bạn có hai bảng, được gọi là tb1 và tb2;
TẠO CƠ SỞ DỮ LIỆU NẾU KHÔNG TỒN TẠI sample_db;
SỬ DỤNG sample_db;
TẠO BẢNG tb1 [
col1 INT[11
col2 INT NOT NULL,
PRIMARY KEY [col1]
];
CREATE TABLE tb2 [
col1 INT NOT NULL AUTO_INCREMENT,
col2 VARCHAR[100] NOT NULL,
col3 INT DEFAULT NULL,
col4 INT DEFAULT NULL,
PRIMARY KEY [col1]
];
INSERT INTO tb1[col1, col2] VALUES[1,0], [2,1],[3,3],[4,4],[5,5];
INSERT INTO tb2[col2,col3,col4] VALUES ["First", 1, 500],["Second", 2, 1000],["Third", 3, 1500],["Fourth", 4, 2000],["Fifth", 5, 2500];
Trong các bảng được tạo bằng truy vấn ở trên, chúng ta có thể thực hiện truy vấn cập nhật bằng cách sử dụng câu lệnh INNER JOIN vì các bảng được liên kết trên col2
Hãy xem xét các truy vấn dưới đây
SỬ DỤNG sample_db;
CẬP NHẬT tb2 INNER THAM GIA tb1 TRÊN tb2. col3 = tb1. col1 ĐẶT col3 = col4 + col4 * 5;
Vì chúng tôi muốn cập nhật dữ liệu trong bảng thứ hai [col3], nơi chúng tôi lấy giá trị của các cột và nhân với 5, trong ví dụ trên, chúng tôi loại bỏ điều kiện WHERE vì chúng tôi muốn cập nhật tất cả các bản ghi trong bảng đã chỉ định
Bạn có thể xác nhận điều này bằng truy vấn chọn như hình bên dưới
CHỌN * TỪ sample_db. tb2;
Đầu ra như hình dưới đây
mysql> CHỌN * TỪ sample_db. tb2;
+------+--------+-------+------+
| col1 | col2 | col3 | col4 |
+------+--------+-------+------+
. 1. Ngày thứ nhất. 3000. 500.
. 2. Thứ hai. 6000. 1000.
. 3. Ngày thứ ba. 9000. 1500.
. 4. thứ tư. 12000. 2000.
. 5. Thứ năm. 15000. 2500.
+------+--------+-------+------+
. 00 giây]
Sự kết luận
Trong hướng dẫn nhanh này, chúng ta đã thảo luận cách sử dụng truy vấn tham gia cập nhật MySQL cho phép bạn kết hợp các bảng và cập nhật giá trị tương ứng
Trong hướng dẫn này, chúng tôi sẽ cố gắng tìm giải pháp cho Mysql Update With Join thông qua lập trình. Đoạn mã sau minh họa điều này
UPDATE business AS b INNER JOIN business_geocode AS g ON b.business_id = g.business_id SET b.mapx = g.latitude, b.mapy = g.longitude WHERE [b.mapx = '' or b.mapx = 0] and g.latitude > 0
Một giải pháp khác được mô tả dưới đây với các ví dụ về mã có thể được sử dụng để giải quyết vấn đề tương tự Cập nhật Mysql với Tham gia
UPDATE employees LEFT JOIN merits ON employees.performance = merits.performance SET salary = salary + salary * 0.015 WHERE merits.percentage IS NULL;Code language: SQL [Structured Query Language] [sql]
UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition
Chúng tôi đã điều tra một loạt các trường hợp sử dụng để tìm ra giải pháp cho vấn đề Mysql Update With Join
Chúng tôi có thể sử dụng cập nhật với tham gia không?
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. Ở đây chúng ta có thể thấy rằng việc sử dụng mệnh đề nối trong câu lệnh cập nhật. Chúng tôi đã hợp nhất hai bảng bằng cách sử dụng mệnh đề nối
Chúng ta có thể sử dụng phép nối bên trong câu lệnh cập nhật MySQL không?
Tham gia cập nhật MySQL được sử dụng để thực thi câu lệnh cập nhật cùng với việc triển khai các mệnh đề INNER JOIN và LEFT JOIN MySQL trong máy chủ. Mệnh đề Update THAM GIA này trong MySQL giúp truy xuất các bản ghi dữ liệu từ các bảng cơ sở dữ liệu liên quan cùng với việc sửa đổi chúng bằng truy vấn
Chúng ta có thể tham gia hai bảng trong truy vấn cập nhật không?
Có thể nối hai hoặc nhiều bảng trong một truy vấn CẬP NHẬT
Làm cách nào để cập nhật dữ liệu từ bảng này sang bảng khác trong MySQL?
MySQL UPDATE THAM GIA cú pháp
- Đầu tiên, chỉ định bảng chính [ T1 ] và bảng mà bạn muốn bảng chính tham gia [ T2 ] sau mệnh đề CẬP NHẬT
- Tiếp theo, chỉ định loại liên kết bạn muốn sử dụng. e. , INNER JOIN hoặc LEFT JOIN và một vị từ nối
Làm cách nào để CẬP NHẬT hai bảng?
Bạn không thể cập nhật nhiều bảng trong một câu lệnh, tuy nhiên, bạn có thể sử dụng một giao dịch để đảm bảo rằng hai câu lệnh CẬP NHẬT được xử lý nguyên tử. Bạn cũng có thể gộp chúng lại để tránh phải đi lòng vòng. Thực ra, tôi đang cập nhật bản ghi của hai bảng này từ một temptable khác. temptable có liên kết đến bảng1 chứ không phải bảng2. 11-Jan-2010
Chúng tôi có thể CẬP NHẬT hai bảng trong một truy vấn duy nhất trong MySQL không?
Sử dụng từ khóa UPDATE để cập nhật nhiều bảng với một truy vấn trong MySQL. Trong truy vấn cập nhật nhiều bảng, mỗi bản ghi thỏa mãn một điều kiện sẽ được cập nhật. Ngay cả khi tiêu chí được khớp nhiều lần, hàng chỉ được cập nhật một lần. 07-Jun-2022
Chúng ta có thể sử dụng nhóm theo câu lệnh CẬP NHẬT không?
Bạn không thể đưa ra câu lệnh CẬP NHẬT bằng cách sử dụng một nhóm theo. Mục đích của việc sử dụng GROUP BY là thay đổi cách hiển thị tập kết quả cho người dùng. Khi bạn có câu lệnh GROUP BY, bạn sử dụng mệnh đề HAVING để lọc tập kết quả tổng hợp. 29-09-2007
Làm cách nào để CẬP NHẬT nhiều bản ghi trong MySQL?
Cập nhật nhiều cột trong nhiều bản ghi [hàng] với các giá trị khác nhau trong MySQL
- Sử dụng câu lệnh CASE
- Sử dụng hàm IF[]
- Sử dụng INSERT ON DUPLICATE KEY UPDATE
- Sử dụng CẬP NHẬT với THAM GIA[]
Chúng ta có thể sử dụng tất cả các hàng và để CẬP NHẬT cùng nhau không?
Truy vấn CẬP NHẬT có thể thay đổi tất cả các hàng của bảng hoặc chúng ta có thể giới hạn ảnh hưởng của câu lệnh cập nhật đối với một số hàng nhất định với sự trợ giúp của mệnh đề WHERE. Hầu hết, chúng tôi sử dụng các giá trị không đổi để thay đổi dữ liệu, chẳng hạn như các cấu trúc sau. Câu lệnh cập nhật đầy đủ được sử dụng để thay đổi toàn bộ dữ liệu của bảng với cùng một giá trị. 29-Apr-2020
Làm cách nào để CẬP NHẬT hai cột trong SQL?
Câu lệnh UPDATE trong SQL được sử dụng để cập nhật dữ liệu của một bảng hiện có trong cơ sở dữ liệu. Chúng tôi có thể cập nhật các cột đơn cũng như nhiều cột bằng cách sử dụng câu lệnh CẬP NHẬT theo yêu cầu của chúng tôi. CẬP NHẬT tên_bảng ĐẶT cột1 = giá trị1, cột2 = giá trị2,09-Jan-2019