Cách gộp truy vấn thành một truy vấn MySQL để đếm giá trị khác nhau ở các cột khác nhau
Hãy tạo một bảng trước:
mysql> create table DemoTable760 (
ClientId int,
ClientId2 int
);
Query OK, 0 rows affected (0.79 sec)
Chèn một số bản ghi vào bảng bằng lệnh insert:
mysql> insert into DemoTable760 values(100,200); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable760 values(100,200); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable760 values(300,400); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable760 values(300,400); Query OK, 1 row affected (0.26 sec) mysql> insert into DemoTable760 values(100,200); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable760 values(100,200); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable760 values(400,500); Query OK, 1 row affected (0.08 sec)
Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select:
mysql> select * from DemoTable760;
Điều này sẽ tạo ra đầu ra sau:
+----------+-----------+ | ClientId | ClientId2 | +----------+-----------+ | 100 | 200 | | 100 | 200 | | 300 | 400 | | 300 | 400 | | 100 | 200 | | 100 | 200 | | 400 | 500 | +----------+-----------+ 7 rows in set (0.00 sec)
Truy vấn sau gộp các truy vấn thành một truy vấn để lấy số lượng các giá trị khác nhau ở các cột khác nhau:
mysql> select sum(ClientId=100) AS ClientId1, sum(ClientId2=200) AS ClientId2 from DemoTable760;
Điều này sẽ tạo ra đầu ra sau:
+-----------+-----------+ | ClientId1 | ClientId2 | +-----------+-----------+ | 4 | 4 | +-----------+-----------+ 1 row in set (0.00 sec)
Giải thích: Trong MySQL, biểu thức logic ClientId=100 trả về 1 (true) hoặc 0 (false). SUM() cộng dồn các giá trị 1/0 này, cho ra số lượng hàng thỏa mãn điều kiện. Cách này cho phép đếm nhiều điều kiện khác nhau trên các cột khác nhau trong một lần quét bảng.