Разница между 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

починил это. Кто-нибудь может объяснить?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
147
0
333 248
5

Ответы 5

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

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

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

Вы можете захотеть, чтобы номера социального страхования были уникальными, но это не так. Например: dailyfinance.com/2010/08/12/…

aij 18.09.2015 00:23

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

вы хотите использовать либо выбрать отдельную строку, либо выбрать отдельную строку

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

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

select col from table1 
union 
select col from table2

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

select col from table1 
union all
select col from table2

если я не ошибаюсь, Oracle позволяет вам сказать select unique..., хотя я бы предпочел действовать стандартным путем.

asgs 27.02.2016 12:06

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

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

  1. Уникальный был старым синтаксисом, а Отчетливый - новым синтаксисом, который теперь является стандартным sql.
  2. Уникальный создает ограничение, согласно которому все вставляемые значения должны отличаться от других. Ошибка может быть засвидетельствована, если попытаться ввести повторяющееся значение. Отчетливый приводит к удалению повторяющихся строк при извлечении данных.
  3. Пример: ВЫБЕРИТЕ имена ОТЧЕТЛИВЫЙ ОТ студента;

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

Только в Oracle =>

SELECT DISTINCT и SELECT UNIQUE ведут себя одинаково. В то время как DISTINCT - это стандарт ANSI SQL, UNIQUE - это специальный оператор Oracle.

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

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

ВЫБРАТЬ ОТЛИЧИТЕЛЬНЫЙ

Другие вопросы по теме