Khi nhóm theo ID và muốn lấy giá trị Message đầu tiên không rỗng (không NULL, không chuỗi rỗng), dùng MIN() sau khi lọc.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (
-> Id VARCHAR(100),
-> Message VARCHAR(200)
-> );
Query OK, 0 rows affected (1.17 sec)
mysql> INSERT INTO DemoTable VALUES('1', ''), ('1', 'Hi'), ('2', 'Hello'), ('3', 'Awesome'), ('3', 'Good Morning'), ('2', NULL);
Query OK, 6 rows affected (0.21 sec)
Truy vấn GROUP BY lấy Message không rỗng đầu tiên
mysql> SELECT Id, MIN(Message) FROM DemoTable
-> WHERE Message IS NOT NULL AND LENGTH(Message) > 0
-> GROUP BY Id;
Kết quả:
+------+--------------+ | Id | MIN(Message) | +------+--------------+ | 1 | Hi | | 2 | Hello | | 3 | Awesome | +------+--------------+ 3 rows in set (0.06 sec)
Lưu ý: MIN() trên chuỗi trả về giá trị nhỏ nhất theo thứ tự alphabet (lexicographically), thường là giá trị "đầu tiên" trong ý nghĩa thông thường.