当前位置:  开发笔记 > 数据库 > 正文

Select Unique和Select Distinct之间的区别

如何解决《SelectUnique和SelectDistinct之间的区别》经验,为你挑选了3个好方法。

我认为这些是同义的,但我在Microsoft SQL中写了以下内容:

Select Unique col from 
     (select col from table1 union select col from table2) alias

它失败了.把它改成

Select Distinct col from 
     (select col from table1 union select col from table2) alias

固定它.谁能解释一下?



1> Bill Karwin..:

SELECT UNIQUE是Oracle的SQL风格支持的旧语法.它是同义词SELECT DISTINCT.

使用SELECT DISTINCT是因为这是标准SQL,并且SELECT UNIQUE是非标准的,并且在Oracle之外的数据库品牌中SELECT UNIQUE可能根本不被识别.



2> BenAlabaster..:

Unique是Create Table()指令中使用的关键字,表示字段将包含唯一数据,通常用于自然键,外键等.

例如:

Create Table Employee(   
    Emp_PKey Int Identity(1, 1) Constraint PK_Employee_Emp_PKey Primary Key,  
    Emp_SSN Numeric Not Null Unique,  
    Emp_FName varchar(16),   
    Emp_LName varchar(16) 
)

即,某人的社会安全号码可能是您表格中的唯一字段,但不一定是主键.

在Select语句中使用Distinct来通知查询您只希望在字段包含可能不唯一的数据时返回唯一项.

Select Distinct Emp_LName
From Employee

您可能有许多具有相同姓氏的员工,但您只需要每个不同的姓氏.

显然,如果您要查询的字段包含唯一数据,则Distinct关键字将变得多余.


您可能希望社会安全号码是唯一的,但它们不是.例如:http://www.dailyfinance.com/2010/08/12/your-social-security-number-may-not-be-unique-to-you/

3> mson..:

对于您要执行的操作,select unique不是有效语法

你想使用select distinct或select distinctrow

实际上,你甚至不需要在你想要做的事情上明确/不确定.您可以通过选择适当的union语句参数来消除重复项.

以下查询本身只会提供不同的值

select col from table1 
union 
select col from table2

如果你确实想要重复,你将不得不这样做

select col from table1 
union all
select col from table2

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有