是的,可以使用MySQL的GROUP BY子句来对多个列进行分组,就像我们可以使用MySQL的DISTINCT子句一样。考虑以下示例,在第一个查询中我们使用了DISTINCT子句,在名为‘testing’的表的‘fname’和‘Lname’列上使用了GROUP BY子句的第二个查询。
mysql> Select * from testing; +------+---------+---------+ | id | fname | Lname | +------+---------+---------+ | 200 | Raman | Kumar | | 201 | Sahil | Bhalla | | 202 | Gaurav | NULL | | 203 | Aarav | NULL | | 204 | Harshit | Khurana | | 205 | Rahul | NULL | | 206 | Piyush | Kohli | | 207 | Lovkesh | NULL | | 208 | Gaurav | Kumar | | 209 | Raman | Kumar | +------+---------+---------+ 10 rows in set (0.00 sec) mysql> Select DISTINCT FNAME,LNAME from testing; +---------+---------+ | FNAME | LNAME | +---------+---------+ | Raman | Kumar | | Sahil | Bhalla | | Gaurav | NULL | | Aarav | NULL | | Harshit | Khurana | | Rahul | NULL | | Piyush | Kohli | | Lovkesh | NULL | | Gaurav | Kumar | +---------+---------+ 9 rows in set (0.00 sec) mysql> Select Fname, LNAME from testingGROUP BY Fname,Lname; +---------+---------+ | Fname | LNAME | +---------+---------+ | Aarav | NULL | | Gaurav | NULL | | Gaurav | Kumar | | Harshit | Khurana | | Lovkesh | NULL | | Piyush | Kohli | | Rahul | NULL | | Raman | Kumar | | Sahil | Bhalla | +---------+---------+ 9 rows in set (0.00 sec)
唯一的区别是,使用GROUP BY子句的MySQL查询返回的结果集是排序的,而使用DISTINCT子句的MySQL查询返回的结果集则没有排序。

GROUP BY Fname,Lname;
+---------+---------+
| Fname | LNAME |
+---------+---------+
| Aarav | NULL |
| Gaurav | NULL |
| Gaurav | Kumar |
| Harshit | Khurana |
| Lovkesh | NULL |
| Piyush | Kohli |
| Rahul | NULL |
| Raman | Kumar |
| Sahil | Bhalla |
+---------+---------+
9 rows in set (0.00 sec)






