sql语句中DISTINCT是什么意思

sql语句中DISTINCT是什么意思,第1张

DISTINCT 这个关键词的意思是用于返回唯一不同的值。

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。SELECT DISTINCT 表示查询结果中,去掉了重复的行;Distinct表示去掉重复的行。

扩展资料:

sql语句中使用DISTINCT的注意事项:

如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中,否则会出现错误。

比如SQL语句:SELECT DISTINCT Company FROM Orders order by Company ASC是可以正常执行的。

但是如果SQL语句是:SELECT DISTINCT Company FROM Orders order by Num ASC是不能正确执行的,在ASP中会提示“ORDER BY 子句与 (Num) DISTINCT 冲突”错误。

SQL语句修改成:SELECT DISTINCT Company,Num FROM Orders order by Num ASC可以正常执行

参考资料:百度百科-DISTINCT

DISTINCT 关键字可从 SELECT 语句的结果中消除重复的行。如果没有指定 DISTINCT,将返回所有行,包括重复的行。例如,如果选择 ProductInventory 中的所有产品 ID 时没有使用 DISTINCT,将返回 1069 行。\x0d\x0a\x0d\x0a如果使用了 DISTINCT,就可以消除重复的行,只查看唯一的产品 ID:\x0d\x0a \x0d\x0aUSE AdventureWorks\x0d\x0aGO\x0d\x0aSELECT DISTINCT ProductID\x0d\x0aFROM Production.ProductInventory\x0d\x0a\x0d\x0a此查询将返回 432 行。

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。

表A:

表B:

1.作用于单列

select distinct name from A

执行后结果如下:

2.作用于多列

示例2.1

select distinct name, id from A

执行后结果如下:

实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。

示例2.2

select distinct xing, ming from B

返回如下结果:

返回的结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重的,而是分别作用于了xing和ming列。

3.COUNT统计

select count(distinct name) from A  --表中name去重后的数目, SQL Server支持,而Access不支持

count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。

select count(distinct name, id) from A

若想使用,请使用嵌套查询,如下:

select count(*) from (select distinct xing, name from B) AS M

4.distinct必须放在开头

select id, distinct name from A  --会提示错误,因为distinct必须放在开头

5.其他

distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinc name,以及对应的“备注”字段,想直接通过distinct是不可能实现的。但可以通过其他方法实现关于SQL Server将一列的多行内容拼接成一行的问题讨论


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9564788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存