unique 和distinct 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unique 和distinct 的区别相关的知识,希望对你有一定的参考价值。

一、从单词来看:
这两个词从词义上应该很了区分的.
distinct:
1、清楚,清晰的;明白,明显的
2、截然不同的,有区别的.些是和form连用
unique:
1、独一无二的,惟一的
2、独特的,罕见的
二、从SQL语言来看:
SQL
语句可返回唯一不同的值
A.
UNIQUE是完整性约束里的一种,如果某列的值需要是唯一的那么就添加UNIQUE约束
Distinct是在查询时用的,若在SELECT的列选择列表中的某列说明为Distinct,那么查询出来的结果里,该列不会出现重复的值.
B.
unique是distinct的同义词,功能完全相同。
distinct是标准语法,其他数据库
sql
server,db2,oracle,sybase,mysql等都支持。
unique,informix数据库认识,其他数据库有的认识,有的不认识。
C.
用UNIQUE和DISTINCT查找不重复的行,
语法好像是一样的,结果也是一样的,
他们究竟有什么区别?
别人的回答是:一样的。
总之,效果是一样的,但是还是按照习惯和规章来吧。select
就用distinct。
在SQL语法里面,有unique和distinct两个关键字,unique是distinct的同义词,功能完全相同。
distinct是标准语法,其他数据库 sql
server,db2,oracle,sybase,mysql等都支持。
unique,informix数据库认识,其他数据库有的认识,有的不认识。以后方便数据库移植,推荐使用distinctDistinct|Unique返回select 出来的重复数据的一笔(distinct/unique
可认为互为同义词)重复行数数据必须和select 出来的每一个表达式匹配。
参考技术A SQL 语句可返回唯一不同的值
A.
UNIQUE是完整性约束里的一种,如果某列的值需要是唯一的那么就添加UNIQUE约束
Distinct是在查询时用的,若在SELECT的列选择列表中的某列说明为Distinct,那么查询出来的结果里,该列不会出现重复的值.
B.
unique是distinct的同义词,功能完全相同。
distinct是标准语法,其他数据库 sql server,db2,oracle,sybase,mysql等都支持。
unique,informix数据库认识,其他数据库有的认识,有的不认识。
C.
用UNIQUE和DISTINCT查找不重复的行,
语法好像是一样的,结果也是一样的,
他们究竟有什么区别?
别人的回答是:一样的。
总之,效果是一样的,但是还是按照习惯和规章来吧。select 就用distinct。
在SQL语法里面,有unique和distinct两个关键字,
unique是distinct的同义词,功能完全相同。
distinct是标准语法,其他数据库 sql server,db2,oracle,sybase,mysql等都支持。
unique,informix数据库认识,其他数据库有的认识,有的不认识。

以后方便数据库移植,推荐使用distinct
Distinct|Unique
返回select 出来的重复数据的一笔(distinct/unique 可认为互为同义词)
重复行数数据必须和select 出来的每一个表达式匹配。
限制:
1:
当你指定Distinct或者Unique 时,总共能显示在Select 后面表达式的Bytes 限制是
oracle的DB_block_size 减去 一些"头部"字节.
(即Select list 中出来的Bytes 数不能大于 DB_block_Size)
2: Distinct 后面不能跟 Lob栏位。
Example
create table uni_dis(colu1 varchar2(4000),
colu2 varchar2(4000),
colu3 varchar2(4000),
colu4 varchar2(4000),
colu5 varchar2(4000))
当将Each column 加满时使用下面SQL 都会报 1486 error
select unique/ distinct
colu1,colu2,colu3,colu4,colu5,colu1||colu2 abcv
from uni_dis
大家要注意此项:
01489, 00000, "result of string concatenation is too long"
// *Cause: String concatenation result is more than the maximum size.
// *Action: Make sure that the result is less than the maximum size本回答被提问者和网友采纳

Select Unique 和 Select Distinct 的区别

【中文标题】Select Unique 和 Select Distinct 的区别【英文标题】:Difference between Select Unique and Select Distinct 【发布时间】:2008-12-03 05:05:37 【问题描述】:

我认为这些是同义词,但我在 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】:

SELECT UNIQUE 是 Oracle 的 SQL 支持的旧语法。它与SELECT DISTINCT 同义。

使用SELECT DISTINCT,因为这是标准SQL,而SELECT UNIQUE是非标准的,在Oracle以外的数据库品牌中,SELECT UNIQUE可能根本无法识别。

【讨论】:

【参考方案2】:

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 关键字就变得多余了。

【讨论】:

您可能希望社会安全号码是唯一的,但事实并非如此。例如:dailyfinance.com/2010/08/12/…【参考方案3】:

select unique 不是您尝试执行的有效语法

您想使用 select distinct 或 select distinctrow

实际上,您甚至不需要 distinct/distinctrow 尝试做的事情。您可以通过选择适当的联合语句参数来消除重复项。

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

select col from table1 
union 
select col from table2

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

select col from table1 
union all
select col from table2

【讨论】:

如果我没记错的话,Oracle 确实允许你说 select unique...,尽管我更喜欢采用标准方式。【参考方案4】:

仅在 Oracle =>

SELECT DISTINCTSELECT UNIQUE 的行为方式相同。虽然 DISTINCT 是 ANSI SQL 标准,但 UNIQUE 是 Oracle 特定的语句。

在其他数据库中(比如你的 sql-server)=>

SELECT UNIQUE 是无效的语法。 UNIQUE 是在列上添加唯一约束的关键字。

SELECT DISTINCT

【讨论】:

【参考方案5】:
    Unique 是旧语法,而 Distinct 是新语法,现在是标准 sql。 Unique 创建一个约束,即所有要插入的值都必须与其他值不同。 如果尝试输入重复值,则可能会出现错误。 不同会导致在检索数据时删除重复的行。

    示例: 从学生中选择 DISTINCT 姓名;

    创建表人员 ( Id varchar NOT NULL UNIQUE, 名称 varchar(20) );

【讨论】:

以上是关于unique 和distinct 的区别的主要内容,如果未能解决你的问题,请参考以下文章

DAX从入门到精通 3-6-1 了解values和distinct

"HybridDB · 性能优化 · Count Distinct的几种实现方式” 读后感

Python Pandas:带有 aggfunc = count unique distinct 的数据透视表

has_many 中 :unique => true/Distinct 选项的问题,通过关联/命名范围(Rails)

mysql union和union all的区别

distinct和group by的区别