【SQL】SQL中distinct的用法

【SQL】SQL中distinct的用法转载自:https://www.cnblogs.com/leonlee/p/6042461.html1.作用于单列2.作用于多列3.COUNT统计4.distinct必须放在开头5.其他在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词distinct用于返回唯一不同的值。表A:表B:1.作用于

大家好,又见面了,我是你们的朋友全栈君。

转载自:https://www.cnblogs.com/leonlee/p/6042461.html

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

表A:

【SQL】SQL中distinct的用法

表B:

【SQL】SQL中distinct的用法

1.作用于单列

select distinct name from A

执行后结果如下:

【SQL】SQL中distinct的用法

2.作用于多列

示例2.1

select distinct name, id from A

执行后结果如下:

【SQL】SQL中distinct的用法

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

示例2.2

select distinct xing, ming from B

返回如下结果:

【SQL】SQL中distinct的用法

返回的结果为两行,这说明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将一列的多行内容拼接成一行的问题讨论


附W3school的讲解

SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称

使用 DISTINCT 关键词

如果要从 “Company” 列中选取所有的值,我们需要使用 SELECT 语句:

SELECT Company FROM Orders

“Orders”表:

Company OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953

结果:

Company
IBM
W3School
Apple
W3School

请注意,在结果集中,W3School 被列出了两次。

如需从 Company” 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:

SELECT DISTINCT Company FROM Orders 

结果:

Company
IBM
W3School
Apple

现在,在结果集中,”W3School” 仅被列出了一次。


 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162190.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sublime激活码【中文破解版】

    (sublime激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    39
  • ubuntu与centos的对比和选择「建议收藏」

    ubuntu与centos的对比和选择「建议收藏」一、分别介绍CentOS(CommunityENTerpriseOperatingSystem)是Linux发行版之一,它是来自于RedHatEnterpriseLinux依照开放源代码规定释出的源代码所编译而成。RedHatEnterpriseLinux(RHEL)是企业发行版。它每五年左右更新一次,在系统的稳定性,前瞻性和安全性上有着极大的优势。由于CentOS…

    2025年9月6日
    7
  • 使用JavaScript 实现 split方法

    使用JavaScript 实现 split方法/***将输入的字符串以逗号分割,忽略为空的情况只保留数组,返回一个数字组成的新数组*禁止使用String.split*提示:可以使用String.chatAt来取String的第n位字符,如’012′.charAt(1)===1*@param{string}str输入的字符串*@param{string}tag分割符*@return{string[]}*/conststr1=’,1,2,3,,44,555,6,78,.

    2025年7月12日
    4
  • Java安全之Commons Collections2分析

    Java安全之CommonsCollections2分析首发:Java安全之CommonsCollections2分析0x00前言前面分析了CC1的利用链,但是发现在CC1的利用链中是有版

    2021年12月12日
    49
  • android手机指纹识别_屏下指纹缺点

    android手机指纹识别_屏下指纹缺点手机科技发展到目前阶段,对于指纹解锁技术已经到第二阶段了,第一阶段有三种指纹解锁方式:正面、侧面、背面,而第二阶段那就是目前还处于上阵新兵状态的屏下指纹,这里我就我个人使用的情况,来谈一下这几种指纹解锁的优劣势吧。一、正面指纹解锁,代表机型iPhone如果我没有记错的话,虽然不是第一个用,但苹果的指纹解锁是从iPhone5S开始,并流行起来的,并且从此就一发不可收拾,我是从iPhone6SP开…

    2022年8月10日
    7
  • Oracle与MySQL区别「建议收藏」

    Oracle与MySQL区别「建议收藏」1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,Oracle是收费的2、Oracle的内存占有量非常大,而mysql非常小3、MySQL支持主键自增长,插入时会自动增长。Oracle主键一般使用序列。4、MySQL分页用limit关键字,而Oracle使用rownum字段表明位置5、MySQL中0、1判断真假,Oracle中truefalse6、MySQL中命令默认commit,但是Oracle需要手动提交7、MySQL在windows环境下大小写不敏感,在l

    2025年11月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号