select独特与select不同的差异
我认为这些是同步的,但我在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独特是不是你想要做的有效语法
你想要使用select不同或selectdistinctrow
而实际上,你甚至不需要在你想要做的事情上有明显的区别。 您可以通过select合适的联合声明参数来消除重复项。
下面的查询本身只会提供不同的值
select col from table1 union select col from table2
如果你确实想要重复,你将不得不这样做
select col from table1 union all select col from table2
- 独特的是旧的语法,而Distinct是新的语法,现在是标准的SQL。
- 唯一性创build了一个约束,即所有要插入的值必须与其他值不同。 如果尝试input重复值,则可能会出现错误。 在检索数据时删除重复的行的结果是不同的。
-
示例:SELECT DISTINCT名称FROM学生;
CREATE TABLE Persons(Id varchar NOT NULL UNIQUE ,Name varchar(20));
只有在Oracle =>中
SELECT DISTINCT
和SELECT UNIQUE
行为方式相同。 尽pipeDISTINCT是ANSI SQL标准,但UNIQUE是Oracle特定的语句。
在其他数据库(如你的情况下的SQL服务器)=>
SELECT UNIQUE
是无效的语法。 UNIQUE
是在列上添加唯一约束的关键字。
SELECT DISTINCT