SELECT中的UNIQUE和DISTINCT有区别吗?

1

疑问

在Oracle数据库中,SELECT语句里的UNIQUE和DISTINCT是否存在区别?答案如下:

没有区别!

 

2

查阅资料

  • 直奔官方文档,我查看了Oracle 12.2的《SQL Language Reference》,地址为https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/SELECT.html#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6,描述如下:

    图片来自Oracle官方在线手册截图

    上述信息主要捕获到DISTINCT和UNIQUE是同义词即可。

  • 除了官方文档外,我查看了

  • PSOUG的资料,资料地址为http://psoug.org/snippet/SELECT-Get-UNIQUE-DISTINCT-values_666.htm,描述如下:

    图片来自PSOUG截图

    接下来是Stackoverflow的内容,资料地址为https://stackoverflow.com/questions/6772451/difference-between-select-distinct-and-select-unique/6772498,描述如下:

    图片来自Stackoverflow截图

    下面将通过查看执行计划的实验来验证。

    3

    实验验证

    以下操作将分别验证查询语句中使用DISTINCT和UNIQUE时的执行计划,数据库版本为Oracle 12.2。

    创建T1表,同时插入5条数据库,其中有2条为重复数据。

    验证T1表数据,分别使用DISTINCT和UNIQUE进行查询,得到的为同样的结果。

    查看使用DISTINCT时的执行计划。

    查看使用UNIQUE时的执行计划,和上面DISTINCT的执行计划一致。

    4

    结论

    综上,在Oracle中DISTINCT和UNIQUE没有区别,二者为同义词,DISTINCT遵循ANSI标准,UNIQUE是Oracle特定的用法,从移植角度考虑,使用遵循ANSI标准的DISTINCT是一个更好的选择。

     

    参考资料

    Oracle SQL Language Reference

    PSOUG.ORG

    Stackoverflow.COM

    secooler【唯一】DISTINCT与UNIQUE的“区别”

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值