Разница между Select Unique и Select Distinct

Я думал, что они являются автономными, но я написал следующее в 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

зафиксировал его. Может кто-нибудь объяснить?

Ответ 1

SELECT UNIQUE - это старый синтаксис, поддерживаемый Oracle-кодом SQL. Это синоним SELECT DISTINCT.

Используйте SELECT DISTINCT, потому что это стандартный SQL, а SELECT UNIQUE является нестандартным, а в других марках баз данных, отличных от Oracle, SELECT UNIQUE может вообще не распознаваться.

Ответ 2

Уникальное - это ключевое слово, используемое в директиве 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) 
)

то есть. Кто-то номер социального страхования, вероятно, будет уникальным полем в вашей таблице, но не обязательно основным ключом.

Distinct используется в инструкции Select для уведомления запроса, в котором вам нужны только уникальные элементы, возвращаемые, когда поле содержит данные, которые могут быть не уникальными.

Select Distinct Emp_LName
From Employee

У вас может быть много сотрудников с одинаковой фамилией, но вам нужно только каждое другое имя.

Очевидно, что если запрашиваемое поле содержит уникальные данные, ключевое слово Distinct становится лишним.

Ответ 3

выберите уникальный недопустимый синтаксис для того, что вы пытаетесь сделать

вы хотите использовать либо выделение, либо выбрать отличительный символ

И на самом деле, вам даже не нужны четкие/отличительные черты в том, что вы пытаетесь сделать. Вы можете исключить дубликаты, выбирая соответствующие параметры утверждения союза.

указанный ниже запрос сам по себе будет предоставлять только определенные значения

select col from table1 
union 
select col from table2

если вам нужны дубликаты, которые вам нужно будет делать

select col from table1 
union all
select col from table2

Ответ 4

  • Уникальный был старый синтаксис, а Отличный - новый синтаксис, который теперь является стандартным sql.
  • Уникальный создает ограничение на то, что все значения, которые нужно вставить, должны отличаться от других. При попытке ввести дублирующее значение может быть засвидетельствована ошибка. Отличный приводит к удалению повторяющихся строк при извлечении данных.
  • Пример: SELECT DISTINCT имена FROM student;

    СОЗДАТЬ ТАБЛИЦЫ Лица ( Id varchar NOT NULL UNIQUE, Имя varchar (20));

Ответ 5

Только в Oracle = >

SELECT DISTINCT и SELECT UNIQUE ведут себя одинаково. Хотя DISTINCT является стандартом ANSI SQL, UNIQUE является специфическим для Oracle выражением.

В других базах данных (например, sql-server в вашем случае) = >

SELECT UNIQUE является недопустимым синтаксисом. UNIQUE - ключевое слово для добавления уникального ограничения для столбца.

SELECT DISTINCT