CẬP NHẬT THAM GIA MySQL

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

Chúng tôi có thể sử dụng CẬP NHẬT với các liên kết không?

SQL UPDATE THAM GIA có thể được sử dụng để cập nhật một bảng bằng cách sử dụng một bảng khác và tham gia điều kiện . CẬP NHẬT tablename INNER JOIN tablename ON tablename.

Chúng tôi có thể sử dụng THAM GIA trái trong truy vấn CẬP NHẬT không?

Chúng ta có thể sử dụng phép nối trái để lấy hàng khớp cùng với hàng chưa khớp từ bảng bên trái. Chúng ta cũng có thể sử dụng câu lệnh Update với Left Join và nó cập nhật các bản ghi với giá trị NULL . Như đã đánh dấu trước đó, chúng tôi không thể sử dụng một câu lệnh Cập nhật để cập nhật nhiều cột từ các bảng khác nhau.

Làm cách nào tôi có thể CẬP NHẬT một bảng từ một bảng khác trong MySQL?

Làm cách nào để cập nhật dữ liệu từ bảng này sang bảng khác? .
Tạo truy vấn Chọn tiêu chuẩn
Chọn Truy vấn → Cập nhật để thay đổi loại truy vấn thành truy vấn hành động cập nhật
Kéo trường sẽ được cập nhật trong bảng đích vào lưới truy vấn
Tùy chọn chỉ định tiêu chí để giới hạn các hàng được cập nhật