选择唯一与选择不同的区别

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

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

345953 次浏览

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 语句中使用 distent 通知查询,当字段包含可能不唯一的数据时,您只希望返回唯一的项。

Select Distinct Emp_LName
From Employee

您可能有许多员工使用相同的姓氏,但是您只希望每个员工使用不同的姓氏。

显然,如果您正在查询的字段包含唯一的数据,那么 很明显关键字就变得多余。

Select only 对于您正在尝试执行的操作来说是无效的语法

您想要使用 select different 或者 select disttrow

实际上,在你尝试做的事情中,你甚至不需要清晰的/明显的界限。可以通过选择适当的联合语句参数来消除重复项。

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

select col from table1
union
select col from table2

如果你想要复制品,你必须做

select col from table1
union all
select col from table2

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

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

  1. Unique 是旧的语法,而 很明显是新的语法,现在是标准 sql。
  2. Unique 创建一个约束,即要插入的所有值必须与其他值不同。 如果试图输入重复的值,可以看到一个错误。 明显的 导致在检索数据时删除重复的行。
  3. 例如: 从学生中选择 很明显名称;

    创建表中人员( Id varchar NOT NULL 独一无二, 名称 varchar (20) ;

仅在 Oracle = > 中

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

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

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

选择与众不同