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

รวมคิวรีนับค่าต่างคอลัมน์ใน MySQL ด้วย SUM(condition)

บทความนี้สาธิตเทคนิคการนับเงื่อนไขหลายอย่างในคอลัมน์ต่างๆ พร้อมกันในคิวรีเดียว โดยใช้ 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)