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

Đếm kết hợp từ 2 bảng trong MySQL với UNION ALL và COUNT

Đếm tần suất giá trị chuỗi từ nhiều bảng với UNION ALL

Sử dụng UNION ALL gộp dữ liệu từ 2 bảng, sau đó GROUP BY và COUNT(*) để đếm tổng số lần xuất hiện của mỗi giá trị.

1. Tạo bảng 1 và chèn dữ liệu

mysql> CREATE TABLE DemoTable1 (Name VARCHAR(20));
mysql> INSERT INTO DemoTable1 VALUES ('Chris'), ('Robert'), ('Mike'), ('Robert');

2. Tạo bảng 2 và chèn dữ liệu

mysql> CREATE TABLE DemoTable2 (Name VARCHAR(40));
mysql> INSERT INTO DemoTable2 VALUES ('Robert'), ('Chris'), ('Robert'), ('David');

3. Xem dữ liệu 2 bảng

mysql> SELECT * FROM DemoTable1;
mysql> SELECT * FROM DemoTable2;

Bảng 1: Chris(1), Robert(2), Mike(1) | Bảng 2: Robert(2), Chris(1), David(1)

4. Truy vấn: Đếm kết hợp từ cả 2 bảng

mysql> SELECT tbl.Name, COUNT(*) AS Total_Count
    FROM (
        SELECT Name FROM DemoTable1
        UNION ALL
        SELECT Name FROM DemoTable2
    ) tbl
    GROUP BY tbl.Name;

5. Kết quả

+--------+-------------+
| Name   | Total_Count |
+--------+-------------+
| Chris  | 2           |
| Robert | 4           |
| Mike   | 1           |
| David  | 1           |
+--------+-------------+

Giải thích:

  • UNION ALL: Gộp tất cả hàng (giữ trùng lặp) - khác UNION (loại trùng)
  • Bảng dẫn xuất tbl có 8 hàng (4+4)
  • GROUP BY Name + COUNT(*) đếm tổng

So sánh UNION vs UNION ALL:

Toán tửXử lý trùng lặpHiệu năng
UNIONLoại bỏ trùng (DISTINCT ngầm)Chậm hơn (cần sort/unique)
UNION ALLGiữ tất cảNhanh hơn

Dùng UNION ALL khi cần đếm chính xác tần suất.