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

นับค่า NOT NULL จากหลายตารางในคำสั่ง MySQL เดียว

การนับจำนวนแถวที่ไม่ใช่ 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 ต่อท้าย