การนับจำนวนแถวที่ไม่ใช่ NULL จากหลายตารางพร้อมกัน
ใช้ Subquery ใน SELECT clause เพื่อนับจากแต่ละตารางแยกกัน แล้วรวมผลลัพธ์ในแถวเดียว
ไวยากรณ์
SELECT
(SELECT COUNT(your_column) FROM table1) AS alias1,
(SELECT COUNT(your_column) FROM table2) AS alias2;
หมายเหตุ: COUNT(column_name) จะนับเฉพาะค่าที่ ไม่ใช่ NULL เท่านั้น
ตัวอย่าง完整
1. สร้างตารางแรกและเพิ่มข้อมูล (มี NULL)
mysql> CREATE TABLE DemoTable1 (Id INT); Query OK, 0 rows affected (1.06 sec) mysql> INSERT INTO DemoTable1 VALUES(1), (NULL), (2), (3); Query OK, 4 rows affected
2. สร้างตารางที่สองและเพิ่มข้อมูล (มี NULL หลายค่า)
mysql> CREATE TABLE DemoTable2 (Id INT); Query OK, 0 rows affected (0.65 sec) mysql> INSERT INTO DemoTable2 VALUES(10), (NULL), (NULL); Query OK, 3 rows affected
3. คำสั่งนับ NOT NULL จากทั้งสองตาราง
mysql> SELECT
-> (SELECT COUNT(Id) FROM DemoTable1) AS CountFirstTableId,
-> (SELECT COUNT(Id) FROM DemoTable2) AS CountSecondTableId;
4. ผลลัพธ์
+-------------------+--------------------+ | CountFirstTableId | CountSecondTableId | +-------------------+--------------------+ | 3 | 1 | +-------------------+--------------------+ 1 row in set (0.00 sec)
คำอธิบายผลลัพธ์
- DemoTable1: มีค่า 1, 2, 3 (3 ค่า) และ NULL 1 ค่า → COUNT(Id) = 3
- DemoTable2: มีค่า 10 (1 ค่า) และ NULL 2 ค่า → COUNT(Id) = 1
เคล็ดลับเพิ่มเติม
- ใช้
COUNT(*)หากต้องการนับทุกแถว (รวม NULL) - ใช้
COUNT(DISTINCT column)หากต้องการนับค่าที่ไม่ซ้ำกัน - สามารถเพิ่มตารางได้มากกว่า 2 ตารางโดยเพิ่ม subquery ต่อท้าย