Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Select Unique和Select Distinct之间的差异_Sql_Sql Server - Fatal编程技术网

Sql Select Unique和Select Distinct之间的差异

Sql Select Unique和Select Distinct之间的差异,sql,sql-server,Sql,Sql Server,我认为这些是一致的,但我用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 修好了。有人能解释一下吗?Unique是Crea

我认为这些是一致的,但我用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

修好了。有人能解释一下吗?

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) 
)
i、 e.某人的社会保险号码可能是表中唯一的字段,但不一定是主键

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

Select Distinct Emp_LName
From Employee
您可能有许多员工的姓氏相同,但您只希望每个员工的姓氏不同


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

select unique对于您尝试执行的操作来说是无效的语法

您要使用“选择不同”或“选择不同”命令

事实上,你甚至不需要在你想做的事情上有明显的区别。您可以通过选择适当的union语句参数来消除重复项

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

select col from table1 
union 
select col from table2
如果你真的想要复制品,你必须这样做

select col from table1 
union all
select col from table2

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

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

  • Unique是旧语法,而Distinct是新语法,现在是标准sql
  • Unique创建一个约束,即所有要插入的值必须不同于其他值。 如果试图输入重复的值,则可以看到错误。 Distinct会在检索数据时删除重复的行
  • 例如: 从学生中选择不同的姓名

    创建表人员( Id varchar非空唯一, 名称varchar(20))

  • 仅在Oracle=>
    选择DISTINCT
    选择UNIQUE
    的行为方式相同。虽然DISTINCT是ANSI SQL标准,但UNIQUE是Oracle特定的语句

    在其他数据库中(如您的sql server)=>
    SELECT UNIQUE
    的语法无效
    UNIQUE
    是用于在列上添加唯一约束的关键字


    您可能希望社会保险号码是唯一的,但事实并非如此。如果我没有错的话,Oracle允许你说
    选择唯一的…
    ,尽管我更喜欢用标准的方式。