ใช้ 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() เลือกค่าแรกตามลำดับอักขระ