Lệnh GROUP By trong SQL

Hiện tại thì đang dùng Xampp 4.7.4
Mình có table “numbers” như sau:

ID STT NHOM
1 so1 nhom2
2 so2 nhom3
3 so3 nhom3

Truy vấn SQL:

SELECT count(ID),ID,STT,NHOM
FROM numbers
GROUP BY NHOM
ORDER BY count(ID) DESC;

Thì nó hiện thị là:

count(id) ID STT NHOM
2 2 so2 nhom3 // tại sao ID và STT không phải là 3
1 1 so1 nhom2

Phần này mình có lên W3 tham khảo: https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_groupby_orderby và chạy đúng như mình nghĩ.

Không biết là do phiên bản này lỗi hay do mình viết sai nữa.

Có thể nó là một dạng Undefined Behavior chăng? Dù sao thì bạn truy vấn thế, xét theo nghĩa cảnh, nó có thể trả về ID và STT của bất kỳ 1 record nào có NHOM là nhom3, không nhất thiết là record có primary key cao nhất hoặc thấp nhất.

GROUP BY dùng để tổng hợp kết quả chứ không phải để liệt kê, thực tế bạn chỉ quan tâm count(ID), NHOM, còn ID,STT không sử dụng được.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?