Distinct关键字用于过滤掉多余的重复记录,只保留一条,但它往往只用于返回重复记录的数量,而不是用于返回所有没有重复的值。原因是distinct只能返回其目标字段,而不能返回其他字段。接下来我会通过这篇文章和大家分享distinct在SQL中的用法。有需要的朋友可以参考一下。
使用mysql时,有时需要找出没有重复字段的记录。虽然mysql提供了关键字distinct来过滤掉冗余的重复记录并只保留一个,但它通常只用于返回非重复记录的数量,而不是所有具有非重复记录的值。原因是distinct只能返回其目标字段,不能返回其他字段。这个问题困扰我很久了。如果distinct解决不了,我只好用双循环查询来解决了。对于一个数据量非常大的站来说,这无疑会直接影响效率,所以浪费了我很多时间。
在该表中,可能包含重复的值。这不是问题,但有时您可能只想列出不同的值。关键字distinct用于返回唯一且不同的值。
表A:
示例1
复制代码如下:
从中选择不同的名称
执行结果如下:
示例2
复制代码如下:
从中选择不同的名称、id
执行结果如下:
其实按照
“name+id”
,去掉重量。同时作用于name和id
。此方法同时受Access和SQL Server
支持。示例3:统计
复制代码如下:
从A中选择count(不同的名称);-重复数据消除后表中名称的数量,SQL Server支持,但Access不支持。
从A中选择count(不同的名称,id)。-不支持- SQL Server和Access
示例4
复制代码如下:
从A中选择id、不同的名称。-将提示错误,因为distinct必须放在开头
其他
distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能的。例如,如果表A有一个“Remarks”列,就不可能直接通过distinc获得distinc名称和相应的“Remarks”字段。
但是,可以使用其他方法来实现关于SQL Server如何将一列的多行拼接成一行的讨论。