Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE JOIN trong MySQL để thực hiện cập nhật bảng chéo. Chúng tôi sẽ hướng dẫn bạn từng bước cách sử dụng mệnh đề INNER JOIN
và mệnh đề LEFT JOIN
với mệnh lệnh UPDATE
Bạn thường sử dụng tham gia để truy vấn các hàng từ một bảng [trong trường hợp _______47_______] hoặc không thể [trong trường hợp _______48_______] các hàng khớp trong một bảng khác. Trong MySQL, bạn có thể sử dụng mệnh đề
UPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
2 trong câu lệnh UPDATE
để thực hiện cập nhật bảng chéoCú pháp của MySQL
UPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
4 như sauUPDATE T1, T2,
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2,
T2.C3 = expr
WHERE condition
Vui lòng xem xét cú pháp
UPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
4 trong MySQL chi tiết hơn- Đầu tiên, chỉ định bảng chính [
6] và bảng mà bạn muốn bảng chính tham gia [UPDATE T1, T2 SET T1.c2 = T2.c2, T2.c3 = expr WHERE T1.c1 = T2.c1 AND condition
7] sau mệnh đềUPDATE T1, T2 SET T1.c2 = T2.c2, T2.c3 = expr WHERE T1.c1 = T2.c1 AND condition
UPDATE
. Chú ý rằng bạn phải chỉ định ít nhất một bảng mệnh đề sauUPDATE
. Dữ liệu trong bảng không chỉ được định sau mệnh đềUPDATE
sẽ không được cập nhật - Tiếp theo, chỉ định một loại tham gia mà bạn muốn sử dụng, tức là
INNER JOIN
hoặcLEFT JOIN
và một vị trí từ. Mệnh đề
2 phải xuất hiện ngay sau mệnh đềUPDATE T1, T2 SET T1.c2 = T2.c2, T2.c3 = expr WHERE T1.c1 = T2.c1 AND condition
UPDATE
- Sau đó, gán giá trị mới cho các cột trong bảng
6 và / hoặcUPDATE T1, T2 SET T1.c2 = T2.c2, T2.c3 = expr WHERE T1.c1 = T2.c1 AND condition
7 mà bạn muốn cập nhậtUPDATE T1, T2 SET T1.c2 = T2.c2, T2.c3 = expr WHERE T1.c1 = T2.c1 AND condition
- Sau đó, chỉ định một điều kiện trong mệnh đề
7 để giới hạn các hàng hóa thành hàng để cập nhậtUPDATE T1,T2 INNER JOIN T2 ON T1.C1 = T2.C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition
Nếu bạn làm theo hướng dẫn câu lệnh
UPDATE T1,T2
INNER JOIN T2 ON T1.C1 = T2.C1
SET T1.C2 = T2.C2,
T2.C3 = expr
WHERE condition
8, bạn sẽ nhận thấy rằng có một cách khác để cập nhật bảng chéo dữ liệu bằng cú pháp sauUPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
Câu lệnh UPDATE
này hoạt động tương tự như
UPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
4 với một mệnh đề giải quyết INNER JOIN
. Nó có nghĩa là bạn có thể viết lại câu lệnh như sauUPDATE T1,T2
INNER JOIN T2 ON T1.C1 = T2.C1
SET T1.C2 = T2.C2,
T2.C3 = expr
WHERE condition
Hãy cùng xem một số ví dụ về công việc sử dụng câu lệnh
UPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
4 để hiểu rõ hơnChúng ta sẽ sử dụng một cơ sở dữ liệu mẫu mới có tên
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
3 để minh họa. Cơ sở dữ liệu mẫu này bao gồm hai bảng- Bảng
4 lưu trữ dữ liệu nhân viên với id, tên, hiệu suất và tiền lương của nhân viênCREATE DATABASE IF NOT EXISTS empdb; USE empdb; -- create tables CREATE TABLE merits [ performance INT[11] NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY [performance] ]; CREATE TABLE employees [ emp_id INT[11] NOT NULL AUTO_INCREMENT, emp_name VARCHAR[255] NOT NULL, performance INT[11] DEFAULT NULL, salary FLOAT DEFAULT NULL, PRIMARY KEY [emp_id], CONSTRAINT fk_performance FOREIGN KEY [performance] REFERENCES merits [performance] ]; -- insert data for merits table INSERT INTO merits[performance,percentage] VALUES[1,0], [2,0.01], [3,0.03], [4,0.05], [5,0.08]; -- insert data for employees table INSERT INTO employees[emp_name,performance,salary] VALUES['Mary Doe', 1, 50000], ['Cindy Smith', 3, 65000], ['Sue Greenspan', 4, 75000], ['Grace Dell', 5, 125000], ['Nancy Johnson', 3, 85000], ['John Doe', 2, 45000], ['Lily Bush', 3, 55000];
- Bảng
5 lưu trữ hiệu suất của nhân viên và Tỷ lệ phần trăm thành tíchCREATE DATABASE IF NOT EXISTS empdb; USE empdb; -- create tables CREATE TABLE merits [ performance INT[11] NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY [performance] ]; CREATE TABLE employees [ emp_id INT[11] NOT NULL AUTO_INCREMENT, emp_name VARCHAR[255] NOT NULL, performance INT[11] DEFAULT NULL, salary FLOAT DEFAULT NULL, PRIMARY KEY [emp_id], CONSTRAINT fk_performance FOREIGN KEY [performance] REFERENCES merits [performance] ]; -- insert data for merits table INSERT INTO merits[performance,percentage] VALUES[1,0], [2,0.01], [3,0.03], [4,0.05], [5,0.08]; -- insert data for employees table INSERT INTO employees[emp_name,performance,salary] VALUES['Mary Doe', 1, 50000], ['Cindy Smith', 3, 65000], ['Sue Greenspan', 4, 75000], ['Grace Dell', 5, 125000], ['Nancy Johnson', 3, 85000], ['John Doe', 2, 45000], ['Lily Bush', 3, 55000];
Các câu lệnh sau khi tạo và tải dữ liệu trong cơ sở dữ liệu theo mẫu
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
3CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
Giả sử bạn muốn điều chỉnh mức lương của nhân viên dựa trên kết quả hoạt động của họ
Phần trăm thành tích được lưu trong bảng
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
5, do đó, bạn phải sử dụng câu lệnh CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
8 để điều chỉnh tiền lương của nhân viên trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4 dựa trên số liệu UPDATE employees
INNER JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * percentage;
0 được lưu trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
5Liên kết giữa các bảng
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4 và UPDATE employees
INNER JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * percentage;
3 là trường UPDATE employees
INNER JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * percentage;
4. Xem truy vấn sauUPDATE employees
INNER JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * percentage;
đầu ra
Cách hoạt động của truy vấn
Chúng ta chỉ định bảng
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4 sau mệnh đề UPDATE
bởi vì chúng ta chỉ muốn cập nhật dữ liệu trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4Đối với mỗi hàng trong bảng
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4, truy vấn kiểm tra giá trị trong cột hiệu so với giá trị trong cột hiệu trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
5. Nếu nó tìm thấy một kết quả phù hợp, nó sẽ lấy UPDATE employees
INNER JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * percentage;
0 trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
5 và cập nhật cột INSERT INTO employees[emp_name,performance,salary]
VALUES['Jack William',NULL,43000],
['Ricky Bond',NULL,52000];
2 trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4Bởi vì chúng ta bỏ qua mệnh đề
INSERT INTO employees[emp_name,performance,salary]
VALUES['Jack William',NULL,43000],
['Ricky Bond',NULL,52000];
4 trong lệnh UPDATE
, tất cả các bản ghi trong bảng CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
4 sẽ được cập nhậtGiả sử công ty thuê thêm hai nhân viên
INSERT INTO employees[emp_name,performance,salary]
VALUES['Jack William',NULL,43000],
['Ricky Bond',NULL,52000];
Bởi vì những nhân viên này là những người mới được tuyển dụng nên dữ liệu hiệu quả của họ không có sẵn hoặc
INSERT INTO employees[emp_name,performance,salary]
VALUES['Jack William',NULL,43000],
['Ricky Bond',NULL,52000];
7Để tăng lương cho nhân viên mới, bạn không thể sử dụng câu lệnh
CREATE DATABASE IF NOT EXISTS empdb;
USE empdb;
-- create tables
CREATE TABLE merits [
performance INT[11] NOT NULL,
percentage FLOAT NOT NULL,
PRIMARY KEY [performance]
];
CREATE TABLE employees [
emp_id INT[11] NOT NULL AUTO_INCREMENT,
emp_name VARCHAR[255] NOT NULL,
performance INT[11] DEFAULT NULL,
salary FLOAT DEFAULT NULL,
PRIMARY KEY [emp_id],
CONSTRAINT fk_performance FOREIGN KEY [performance]
REFERENCES merits [performance]
];
-- insert data for merits table
INSERT INTO merits[performance,percentage]
VALUES[1,0],
[2,0.01],
[3,0.03],
[4,0.05],
[5,0.08];
-- insert data for employees table
INSERT INTO employees[emp_name,performance,salary]
VALUES['Mary Doe', 1, 50000],
['Cindy Smith', 3, 65000],
['Sue Greenspan', 4, 75000],
['Grace Dell', 5, 125000],
['Nancy Johnson', 3, 85000],
['John Doe', 2, 45000],
['Lily Bush', 3, 55000];
8 vì hiệu suất dữ liệu của họ không có sẵn trong bảng UPDATE employees
INNER JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * percentage;
3. Đây là lý do tại sao UPDATE employees
LEFT JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * 0.015
WHERE
merits.percentage IS NULL;
0 đến để giải cứuVề cơ bản câu lệnh
UPDATE employees
LEFT JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * 0.015
WHERE
merits.percentage IS NULL;
0 cập nhật một hàng trong bảng khi nó không có hàng tương ứng trong bảng khácVí dụ. bạn có thể tăng lương cho một nhân viên mới lên 1,5% bằng cách sử dụng câu lệnh sau
UPDATE employees
LEFT JOIN
merits ON employees.performance = merits.performance
SET
salary = salary + salary * 0.015
WHERE
merits.percentage IS NULL;
đầu ra
Trong hướng dẫn này, chúng tôi chỉ cho bạn cách sử dụng
UPDATE T1, T2
SET T1.c2 = T2.c2,
T2.c3 = expr
WHERE T1.c1 = T2.c1 AND condition
4 trong MySQL với các mệnh đề INNER JOIN
và LEFT JOIN
để thực hiện cập nhật bảng chéo