我认为这些是同义的,但我在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
固定它.谁能解释一下?
SELECT UNIQUE
是Oracle的SQL风格支持的旧语法.它是同义词SELECT DISTINCT
.
使用SELECT DISTINCT
是因为这是标准SQL,并且SELECT UNIQUE
是非标准的,并且在Oracle之外的数据库品牌中SELECT UNIQUE
可能根本不被识别.
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关键字将变得多余.
对于您要执行的操作,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