没有聚集函数的GROUP BY子句将如何执行?
在SELECT语句中使用GROUP BY子句且未使用聚集函数,则它的行为类似于DISTINCT子句。例如,我们有以下表格 –
mysql> Select * from Student_info;
+------+---------+------------+------------+
| id | Name | Address | Subject |
+------+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Chandigarh | Literature |
| 125 | Raman | Shimla | Computers |
| 130 | Ram | Jhansi | Computers |
| 132 | Shyam | Chandigarh | Economics |
| 133 | Mohan | Delhi | Computers |
| 150 | Saurabh | NULL | Literature |
+------+---------+------------+------------+
7 rows in set (0.00 sec)
通过在列“Address”上使用DISTINCT子句,MySQL将返回以下结果集。
mysql> Select DISTINCT ADDRESS from Student_info;
+------------+
| ADDRESS |
+------------+
| Amritsar |
| Chandigarh |
| Shimla |
| Jhansi |
| Delhi |
| NULL |
+------------+
6 rows in set (0.07 sec)
现在,通过使用GROUP BY子句,我们可以得到与使用DISTINCT时相同的结果集 –
mysql> Select ADDRESS from Student_info GROUP BY Address;
+------------+
| ADDRESS |
+------------+
| NULL |
| Amritsar |
| Chandigarh |
| Delhi |
| Jhansi |
| Shimla |
+------------+
6 rows in set (0.00 sec)
我们可以观察到通过MySQL查询使用GROUP BY子句返回的结果集与使用DISTINCT子句返回的结果集之间的差异是,MySQL查询使用GROUP BY子句返回的结果集是排序的,而与此相反,MySQL查询使用DISTINCT子句返回的结果集是无序的。
阅读更多:MySQL 教程