选择唯一和选择不同之间的区别


145

我以为它们是同义词,但是我在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

解决它。有人可以解释吗?

Answers:


169

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

使用SELECT DISTINCT,因为这是标准的SQL,和SELECT UNIQUE是非标准的,并且在数据库比甲骨文品牌等,SELECT UNIQUE可能根本不会被承认。


113

唯一是在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关键字将变得多余。


2
您可能希望社会保险号是唯一的,但并非如此。例如:dailyfinance.com/2010/08/12/…–
aij

18

选择唯一的无效语法对于您尝试做的事情

您要使用选择非重复或选择非重复行

实际上,您甚至不需要区分自己的想法。您可以通过选择适当的并集语句参数来消除重复项。

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

select col from table1 
union 
select col from table2

如果您确实想要重复,则必须要做

select col from table1 
union all
select col from table2

1
如果我没有记错,Oracle可以允许您说select unique...,尽管我更喜欢采用标准方式。
asgs 2013年

3

仅在Oracle中=>

SELECT DISTINCTSELECT UNIQUE以相同的方式表现。DISTINCT是ANSI SQL标准,而UNIQUE是Oracle特定的语句。

在其他数据库中(例如sql-server)=>

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

选择地区


0
  1. 独特的是旧的语法,而鲜明的是新的语法,这是目前标准的SQL。
  2. 唯一创建了一个约束,即要插入的所有值都必须与其他值不同。如果尝试输入重复值,则可以看到错误。 不同导致检索数据时删除重复的行。
  3. 示例:SELECT DISTINCT FROM学生姓名;

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.