/ / SQL 고유 : 설명, 예제, 속성

SQL 구별 : 설명, 예제, 특성

Зачастую при использовании SQL для выборки 사용자는 테이블에서 정보를 얻을 수 있으며, 동일한 반복 행이 존재하는 중복 데이터를 수신합니다. 이 상황을 제거하려면 Select 절에서 SQL distinct 인수를 사용하십시오. 이 기사에서는이 인수의 사용 예와 인수 사용을 거부하는 것이 더 나은 상황에 대해 설명합니다.

특정 예제를 고려하기 전에 데이터베이스에 필요한 테이블을 몇 개 만듭니다.

SQL 구별

테이블 준비

Представим, что у нас в базе данных хранится 바탕 화면 정보는 두 개의 표로 표시됩니다. 필드 ID (고유 식별자), 유형 (벽지 유형-종이, 비닐 등), 색상 (컬러), 구조체 (구조) 및 가격 (가격)이있는 Oboi 테이블 (벽지)입니다. 필드 id_oboi (Oboi 테이블의 고유 식별자에 대한 링크)와 count (재고 롤 수)가있는 Ostatki 테이블 (남은 부분).

테이블을 데이터로 채 웁니다. 월페이퍼가있는 테이블에 9 개의 항목을 추가하십시오.

벽지

아이디

타입

색깔

구조체

가격

1

종이

다색

양각

56,9

2

종이 2 층

베이지

부드럽게

114,8

3

비닐

주황색

양각

504

4

부직포

베이지

양각

1020,9

5

종이 2 층

베이지

부드럽게

150,6

6

종이

다색

부드럽게

95,4

7

비닐

갈색

부드럽게

372

8

부직포

백인

양각

980,1

9

패브릭

분홍

부드럽게

1166,5

잔차가있는 테이블에는 9 개의 항목도 있습니다.

Ostatki

id_oboi

카운트

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

SQL에서 구별이 어떻게 사용되는지 설명하기 시작하겠습니다.

Select 절에서 구별하기

뚜렷한 위치는검색어에서 키워드를 선택하세요. 최종 쿼리 결과에서 절대적으로 동일한 행을 제외하므로 Select 절에 지정된 모든 열에 즉시 적용됩니다. 따라서 SQL 쿼리를 작성할 때 "고유 선택"을 한 번만 지정하면됩니다. 예외는 별개의 내부 집계 함수를 사용하는 것입니다.

SQL 선택 구별

대부분의 DBMS는 다음 형식의 쿼리를 인식하지 못합니다.

고유 한 Ostatki.Count, 고유 한 Oboi를 선택합니다. *

오보이에서

내부 가입 Ostatki ON Oboi.id = Ostatki.id_oboi

문제의 인수가 여기에 여러 번 지정되었거나 한 번 지정되었지만 두 번째, 세 번째 또는 기타 선택 가능한 열 앞에 지정되었습니다. 구문이 부정확하다는 오류가 표시됩니다.

표준 쿼리에서 구별 사용

유능한 구조의 구조로테이블과 그 채우기, 하나의 테이블 내 상황은 절대적으로 동일한 행이 발견 될 때 제외됩니다. 따라서 한 테이블에서 선택하여 "Select distinct *"쿼리를 실행하는 것은 실질적으로 비현실적입니다.

SQL에서 구별

우리가 가지고있는 배경 화면의 유형을 찾아야하는 상황을 상상해보십시오. 편의를 위해 즉시 유형별로 정렬합니다.

Oboi.type 선택

유형별 Oboi 주문

결과는 다음과 같습니다.

타입

종이

종이

종이 2 층

종이 2 층

비닐

비닐

패브릭

부직포

부직포

보시다시피 테이블에 중복 된 행이 있습니다. Select distinct 절에 추가하면 :

고유 한 Oboi.type 선택

유형별 Oboi 주문

반복하지 않고 결과를 얻습니다.

타입

종이

종이 2 층

비닐

패브릭

부직포

따라서 데이터가 올바르게 입력 된 경우고객의 전화 나 요청이있는 즉시 매장에서 액체 벽지, 유리 벽지, 아크릴 벽지를 구입할 수 없다는 점을 알려드립니다. 상점의 구색이 일반적으로 100 개의 월페이퍼에 국한되지 않는다는 점을 고려할 때 고유하지 않은 유형의 목록을 살펴 보는 것은 상당히 힘들 것입니다.

고유 한 내부 집계 함수 사용

SQL 고유 인수는 다음과 함께 사용할 수 있습니다.집계 함수. 그러나 Min 및 Max의 경우 효과가 없으며 합계 또는 평균을 계산할 때 반복을 고려할 필요가없는 상황을 거의 상상할 수 없습니다.

창고가 얼마나 꽉 찼는 지 알고 싶어하고이를 위해 창고의 총 롤 수를 계산하는 요청을 보냅니다.

SELECT 합계 (Ostatki.count)

Ostatki에서

요청은 응답 143을 반환합니다. 다음으로 변경하는 경우 :

SELECT 합계 (고유 Ostatki.count)

Ostatki에서

3 번과 7 번 항목의 벽지가 동일한 수량의 창고에 있기 때문에 119 개만받습니다. 그러나이 대답은 분명히 정확하지 않습니다.

Count 함수와 구별되는 SQL에서 가장 자주 사용됩니다. 따라서 일반적으로 얼마나 많은 고유 한 유형의 벽지가 있는지 쉽게 알 수 있습니다.

SELECT 수 (고유 Oboi.type)

오보이에서

그리고 결과 5-종이 정규 및2 층, 비닐, 직물 및 부직포. 분명히 모든 사람들이 "우리만이 20 가지 이상의 다양한 배경 화면을 가지고 있습니다!"와 같은 광고를 보았을 것입니다. 이것은이 가게에 모든 것의 롤이 수십 개가 아니라 가장 다양한 현대 유형의 배경 화면이 있다는 것을 의미합니다.

하나의 요청에서 지정할 수 있다는 것이 흥미 롭습니다.구별이 있거나없는 여러 Count 함수. 즉, 이것이 Select에서 distinct가 여러 번 나타날 수있는 유일한 상황입니다.

인수를 취소 할 때

SQL 고유 인수는 다음 두 경우 중 하나에서 버려 져야합니다.

  1. 테이블에서 가져오고 있으며 확신합니다.각각의 값의 고유성. 이 경우 인수를 사용하는 것은 DBMS 유형에 따라 서버 또는 클라이언트에 대한 추가로드이기 때문에 비실용적입니다.
  2. 필요한 데이터 손실을 두려워합니다. 설명하겠습니다.

상사가 보유한 배경 화면을 유형과 색상의 두 열로 나열 해달라고 요청한다고 가정 해 보겠습니다. 습관적으로, 당신은 뚜렷한 주장을 제공합니다.

고유 한 Oboi.type, Oboi.color 선택

오보이에서

Oboi.type에 의해 주문

그리고-일부 데이터가 손실됩니다.

타입

색깔

종이

다색

종이 2 층

베이지

비닐

갈색

비닐

주황색

패브릭

분홍

부직포

베이지

부직포

백인

실제로 우리의 작은 테이블에도 두 개의 기사가 있지만 실제로는 한 가지 유형의 종이 벽지 (일반 및 2 층) 만있는 것처럼 보일 수 있습니다 (결과는 구별되지 않음).

타입

색깔

종이

다색

종이

다색

종이 2 층

베이지

종이 2 층

베이지

비닐

갈색

비닐

주황색

패브릭

분홍

부직포

백인

부직포

베이지

따라서 쿼리를 작성할 때와 마찬가지로 명확한 인수를 사용하여 당면한 작업에 따라 해당 응용 프로그램의 문제를 신중하고 유능하게 해결해야합니다.

뚜렷한 대안

distinct의 반대는 인수입니다.모두. 중복 된 선은 적용시 유지됩니다. 그러나 기본적으로 DBMS는 모든 값이 표시되어야한다고 생각하기 때문에 All 인수는 실제 기능 인수보다 한정자에 가깝습니다.

고유 한 SQL 설명
이제 이해하기를 바랍니다.구별 (SQL)이 적용됩니다. 설명은 다양한 문제를 해결하는 데이 인수를 사용하는 것이 적절함에 대한 완전한 정보를 제공했습니다. 결국, 응용 프로그램에서 그러한 단순한 주장조차도 일부 데이터를 잃고 부정확 한 정보를 표시 할 수있는 확실한 가능성을 숨 깁니다.

좋아요 :
0
인기 게시물
영적 개발
음식
예