Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

รวมสองตารางด้วย UNION ใน MySQL

Merge ตารางด้วย CREATE TABLE ... SELECT ... UNION

สร้างตารางใหม่จากการรวมข้อมูลสองตารางด้วย UNION (ลบซ้ำ) หรือ UNION ALL (เก็บทั้งหมด)

ไวยากรณ์

CREATE TABLE newTable SELECT * FROM table1 UNION SELECT * FROM table2;

ตัวอย่าง

CREATE TABLE FirstTable (Id INT, PersonName VARCHAR(20));
INSERT INTO FirstTable VALUES (10, 'Larry'), (20, 'David');

CREATE TABLE SecondTable (Id INT, PersonName VARCHAR(20));
INSERT INTO SecondTable VALUES (30, 'Chris'), (40, 'Robert');

Merge ด้วย UNION

CREATE TABLE MergeBothTableDemo
SELECT * FROM FirstTable
UNION
SELECT * FROM SecondTable;

ผลลัพธ์

+------+------------+
| Id   | PersonName |
+------+------------+
| 10   | Larry      |
| 20   | David      |
| 30   | Chris      |
| 40   | Robert     |
+------+------------+

UNION vs UNION ALL

คำสั่งพฤติกรรมประสิทธิภาพ
UNIONDistinct (ลบซ้ำ)ช้ากว่า (ต้อง Sort/Hash)
UNION ALLAll rows (รวมซ้ำ)เร็วกว่า

ข้อควรระวัง

  • โครงสร้างคอลัมน์ต้องตรงกัน (จำนวน, ชนิด, ลำดับ)
  • ไม่คัดลอก Index, PK, FK, Auto Increment
  • Column Name มาจาก SELECT แรก
  • ใช้ Alias หากชื่อคอลัมน์ต่างกัน: SELECT id AS uid FROM t1 UNION SELECT user_id FROM t2