บทความนี้สาธิตเทคนิคการนับเงื่อนไขหลายอย่างในคอลัมน์ต่างๆ พร้อมกันในคิวรีเดียว โดยใช้ SUM(condition) ซึ่ง Condition จะให้ค่า 1 (True) หรือ 0 (False)
สร้างตารางและข้อมูล ClientId คู่
mysql> CREATE TABLE DemoTable760(
ClientId INT, ClientId2 INT
);
Query OK, 0 rows affected (0.79 sec)
mysql> INSERT INTO DemoTable760 VALUES(100, 200), (100, 200), (300, 400), (300, 400), (100, 200), (100, 200), (400, 500);
คิวรีนับ ClientId=100 และ ClientId2=200 พร้อมกัน
mysql> SELECT
SUM(ClientId = 100) AS ClientId1,
SUM(ClientId2 = 200) AS ClientId2
FROM DemoTable760;
ผลลัพธ์
+-----------+-----------+
| ClientId1 | ClientId2 |
+-----------+-----------+
| 4 | 4 |
+-----------+-----------+
คำอธิบาย:
ClientId = 100- Boolean Expression คืน 1 (True) หรือ 0 (False)SUM(ClientId = 100)- รวมค่า 1/0 = นับจำนวนแถวที่ ClientId = 100- ทำได้ในคิวรีเดียว ไม่ต้อง UNION หรือ Subquery หลายตัว
- MySQL True = 1, False = 0 (Standard SQL: Boolean ไม่ใช่ Number แต่ MySQL รองรับ)
เทียบเท่า COUNT 방식:
SELECT
COUNT(CASE WHEN ClientId = 100 THEN 1 END) AS ClientId1,
COUNT(CASE WHEN ClientId2 = 200 THEN 1 END) AS ClientId2
FROM DemoTable760;
(Standard SQL Compliant - ทำงานได้ทุก Database)