Programing

Select Unique와 Select Distinct의 차이점

lottogame 2020. 6. 23. 07:41
반응형

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

고쳤다. 누군가 설명 할 수 있습니까?


SELECT UNIQUE오라클의 SQL 풍미가 지원하는 오래된 구문입니다. 와 동의어입니다 SELECT DISTINCT.

사용 SELECT DISTINCT이 표준 SQL이며, 때문에 SELECT UNIQUE비표준이며, 데이터베이스, 오라클 이외의 브랜드 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

오라클에서만 =>

SELECT DISTINCTSELECT UNIQUE같은 방식으로 작동합니다. DISTINCT는 ANSI SQL 표준이지만 UNIQUE는 Oracle 고유의 명령문입니다.

다른 데이터베이스 (예 : sql-server와 같은) =>

SELECT UNIQUE잘못된 구문입니다. UNIQUE열에 고유 제한 조건을 추가하기위한 키워드입니다.

고유 한 선택


  1. 고유 구문은 이전 구문이고 Distinct 는 새로운 구문이며 이제는 표준 SQL입니다.
  2. Unique 는 삽입 할 모든 값이 다른 값과 달라야한다는 제약 조건을 만듭니다. 중복 값을 입력하려고하면 오류가 발생할 수 있습니다. 구별 하면 데이터를 검색하는 동안 중복 행이 제거됩니다.
  3. 예 : SELECT DISTINCT 이름 FROM student;

    CREATE TABLE Persons (id varchar NOT NULL UNIQUE , 이름 varchar (20));

참고 URL : https://stackoverflow.com/questions/336268/difference-between-select-unique-and-select-distinct

반응형