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

GROUP BY แสดงเฉพาะค่าที่ไม่ว่างเปล่าใน MySQL

ใช้ WHERE Message IS NOT NULL AND LENGTH(Message) > 0 กรองค่าว่างและ NULL ก่อน GROUP BY

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> Id VARCHAR(100),
    -> Message VARCHAR(200)
    -> );

เพิ่มข้อมูลตัวอย่าง (มีค่าว่างและ NULL)

mysql> INSERT INTO DemoTable VALUES('1', '');
mysql> INSERT INTO DemoTable VALUES('1', 'Hi');
mysql> INSERT INTO DemoTable VALUES('2', 'Hello');
mysql> INSERT INTO DemoTable VALUES('3', 'Awesome');
mysql> INSERT INTO DemoTable VALUES('3', 'Good Morning');
mysql> INSERT INTO DemoTable VALUES('2', NULL);

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+------+--------------+
| Id   | Message      |
+------+--------------+
| 1    |              |
| 1    | Hi           |
| 2    | Hello        |
| 3    | Awesome      |
| 3    | Good Morning |
| 2    | NULL         |
+------+--------------+

คำสั่ง GROUP BY เลือกค่าแรกที่ไม่ว่าง

mysql> SELECT Id, MIN(Message) FROM DemoTable
    -> WHERE Message IS NOT NULL AND LENGTH(Message) > 0
    -> GROUP BY Id;

ผลลัพธ์:

+------+--------------+
| Id   | MIN(Message) |
+------+--------------+
| 1    | Hi           |
| 2    | Hello        |
| 3    | Awesome      |
+------+--------------+

คำอธิบาย: WHERE กรองทิ้งค่าว่าง ('') และ NULL ก่อน แล้วค่อย GROUP BY และใช้ MIN() เลือกค่าแรกตามลำดับอักขระ