Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

GROUP BY và chỉ lấy giá trị không rỗng đầu tiên trong MySQL

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.