Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo bảng mới từ hợp nhất hai bảng với UNION trong MySQL

Sử dụng CREATE TABLE ... SELECT ... UNION ... để gộp dữ liệu từ hai bảng có cấu trúc giống nhau vào một bảng mới.

Cú pháp

CREATE TABLE bảng_mới (
    SELECT * FROM bảng_1
) UNION (
    SELECT * FROM bảng_2
);

Ví dụ minh họa

Tạo 2 bảng cũ có cấu trúc giống nhau:

mysql> CREATE TABLE Old_TableDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(20)
    -> );

mysql> CREATE TABLE Old_TableDemo2 (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(20)
    -> );

Chèn dữ liệu vào bảng 1:

mysql> INSERT INTO Old_TableDemo(UserName) VALUES ('John'), ('Carol');

Chèn dữ liệu vào bảng 2:

mysql> INSERT INTO Old_TableDemo2(UserName) VALUES ('Larry'), ('Sam');

Tạo bảng mới gộp 2 bảng (UNION loại bỏ trùng lặp):

mysql> CREATE TABLE UserTableDemo (
    -> SELECT * FROM Old_TableDemo
    -> ) UNION (
    -> SELECT * FROM Old_TableDemo2
    -> );
Query OK, 4 rows affected (1.18 sec)
Records: 4  Duplicates: 0  Warnings: 0

Kiểm tra bảng mới:

mysql> SELECT * FROM UserTableDemo;
+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | John     |
| 2      | Carol    |
| 1      | Larry    |
| 2      | Sam      |
+--------+----------+

Lưu ý quan trọng

  • UNION loại bỏ hàng trùng lặp (so sánh toàn bộ hàng)
  • UNION ALL giữ tất cả hàng, bao gồm trùng lặp - nhanh hơn
  • Cấu trúc cột của các SELECT phải khớp nhau (số cột, thứ tự, kiểu dữ liệu tương thích)
  • Cột AUTO_INCREMENT trong bảng mới sẽ được gán lại từ 1

Ví dụ với UNION ALL

CREATE TABLE UserTableDemo2 (
    SELECT * FROM Old_TableDemo
) UNION ALL (
    SELECT * FROM Old_TableDemo2
);