MySQL中Distinct和Group By语句的基本使用教程
MySQLDistinct去掉查询结果重复记录
DISTINCT
使用DISTINCT关键字可以去掉查询中某个字段的重复记录。
语法:
SELECTDISTINCT(column)FROMtb_name
例子:
假定user表有如下记录:
uidusername 1小李 2小张 3小李 4小王 5小李 6小张
SQL语句:
SELECTDISTINCT(username)FROMuser
返回查询结果如下:
username 小李 小张 小王
提示
使用DISTINCT关键字去掉重复记录具有较大的局限性。DISTINCT()只能包含一个字段且查询结果也只返回该字段而非数据完整记录(如上例所示)。
可以尝试使用如下语法:
SELECTDISTINCT(column),column1,column2,...FROMtb_name
该查询结果将返回列出的所有字段,但该查询往往使column的唯一性失效,且column1,column2,…不能放在DISTINCT(column)之前。
上面的例子如果要返回如下结果(这往往是期望中的):
uidusername 1小李 2小张 3小王
这时候就要用到GROUPBY关键字。
MySQLGroupBy数据分组
GROUPBY
MySQL中使用GROUPBY关键字用于对某个或某些字段查询分组,并返回重复记录的第一条。
语法:
SELECTcolumn,...FROMtb_nameGROUPBYcolumn1,column2...
user表记录如下:
uidusername 1小李 2小张 3小李 4小王 5小李 6小张
对上面的user表做查询如下:
SELECT*FROMuserGROUPBYusername
返回查询结果如下:
uidusername 1小李 2小张 3小王
说明
GROUPBY语法在MySQL数据库中的用法与其他数据库相差较大。对于标准SQL而言,GROUPBY一定要结合聚合函数使用,而且选择的字段除了聚合函数外,还必须在GROUPBY中出现。但是在MySQL中扩展了GROUPBY的功能:
不加聚合函数的情况下,返回的结果是GROUPBY结果集中第一行,如上面例子所示。
GROUPBY结合聚合函数的时候,选择的字段不必在GROUPBY中存在,MySQL具有隐含字段的功能。
所以我们可以根据MySQL对GROUPBY的扩展特性,结合另外一些关键字如ORDERBY等,方便的得到想要的查询结果。
例子2:
SELECT*FROMuserGROUPBYusername,uid
返回查询结果如下:
uidusername 1小李 3小李 5小李 2小张 6小张 4小王