Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để đếm trên một truy vấn liên hợp MySQL?

Để thực hiện đếm kết hợp, tức là để tính kết quả UNION, hãy sử dụng cú pháp dưới đây -

SELECT COUNT(*)
FROM
(
SELECT yourColumName1 from yourTableName1
UNION
SELECT yourColumName1 from yourTableName2
) anyVariableName;

Để hiểu cú pháp trên, chúng ta hãy tạo hai bảng với một số bản ghi. Truy vấn để tạo bảng như sau -

mysql> create table union_Table1
-> (
-> UserId int
-> );
Query OK, 0 rows affected (0.47 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into union_Table1 values(1);
Query OK, 1 row affected (0.18 sec)

mysql> insert into union_Table1 values(10);
Query OK, 1 row affected (0.12 sec)

mysql> insert into union_Table1 values(20);
Query OK, 1 row affected (0.09 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from union_Table1;

Sau đây là kết quả -

+--------+
| UserId |
+--------+
| 1      |
| 10     |
| 20     |
+--------+
3 rows in set (0.00 sec)

Truy vấn để tạo bảng thứ hai.

mysql> create table union_Table2
-> (
-> UserId int
-> );
Query OK, 0 rows affected (0.69 sec)

Chèn bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau.

mysql> insert into union_Table2 values(1);
Query OK, 1 row affected (0.12 sec)

mysql> insert into union_Table2 values(30);
Query OK, 1 row affected (0.26 sec)

mysql> insert into union_Table2 values(50);
Query OK, 1 row affected (0.13 sec)

Hiển thị tất cả các bản ghi từ bảng bằng lệnh select. Truy vấn như sau -

mysql> select *from union_Table2;

Sau đây là kết quả -

+--------+
| UserId |
+--------+
| 1      |
| 30     |
| 50     |
+--------+
3 rows in set (0.00 sec)

Trong cả hai bảng, nếu bất kỳ bản ghi nào giống nhau thì bản ghi đó sẽ chỉ được xem xét một lần. Đây là truy vấn để tính vào truy vấn liên hợp.

mysql> select count(*) as UnionCount from
-> (
-> select distinct UserId from union_Table1
-> union
-> select distinct UserId from union_Table2
-> )tbl1;

Sau đây là đầu ra hiển thị số lượng.

+------------+
| UnionCount |
+------------+
| 5          |
+------------+
1 row in set (0.00 sec)