ALL, DISTINCT, DISTINCTROW, TOP 조건자
Applies ToMicrosoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

SQL 쿼리를 사용하여 선택한 레코드를 지정합니다.

구문

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]FROM 테이블

이러한 조건자를 포함하는 SELECT 문에는 다음과 같은 부분이 있습니다.

구성 요소

설명

ALL

조건자 중 하나를 포함하지 않는 경우 가정합니다. Microsoft Access 데이터베이스 엔진은 SQL 문의 조건을 충족하는 모든 레코드를 선택합니다. 다음 두 예제는 동일하며 Employees 테이블의 모든 레코드를 반환합니다.

SELECT ALL *FROM EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

선택한 필드에 중복 데이터가 포함된 레코드를 생략합니다. 쿼리 결과에 포함하려면 SELECT 문에 나열된 각 필드의 값이 고유해야 합니다. 예를 들어 Employees 테이블에 나열된 여러 직원의 성은 같을 수 있습니다. LastName 필드에 두 레코드에 Smith가 포함된 경우 다음 SQL 문은 Smith를 포함하는 레코드를 하나만 반환합니다.

SELECT DISTINCT LastNameFROM Employees;

DISTINCT를 생략하면 이 쿼리는 Smith 레코드를 모두 반환합니다.

SELECT 절에 둘 이상의 필드가 포함된 경우 지정된 레코드가 결과에 포함되려면 모든 필드의 값 조합이 고유해야 합니다.

DISTINCT를 사용하는 쿼리의 출력은 업데이트할 수 없으며 다른 사용자의 후속 변경 내용을 반영하지 않습니다.

DISTINCTROW

중복 필드뿐만 아니라 전체 중복 레코드를 기반으로 데이터를 생략합니다. 예를 들어 CustomerID 필드에 고객 및 주문 테이블을 조인하는 쿼리를 만들 수 있습니다. Customers 테이블에는 중복된 CustomerID 필드가 없지만 주문 테이블은 각 고객이 많은 주문을 할 수 있기 때문에 수행합니다. 다음 SQL 문에서는 DISTINCTROW를 사용하여 주문이 하나 이상 있지만 해당 주문에 대한 세부 정보가 없는 회사 목록을 생성하는 방법을 보여 줍니다.

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

DISTINCTROW를 생략하면 이 쿼리는 두 개 이상의 주문이 있는 각 회사에 대해 여러 행을 생성합니다.

DISTINCTROW는 쿼리에 사용된 테이블 중 일부에서 필드를 선택할 때만 효과가 있습니다. 쿼리에 테이블이 하나만 포함되거나 모든 테이블의 필드를 출력하는 경우 DISTINCTROW는 무시됩니다.

TOP n [PERCENT]

ORDER BY 절로 지정된 범위의 위쪽 또는 아래쪽에 속하는 특정 수의 레코드를 반환합니다. 1994년 수업의 상위 25명의 학생 이름을 원한다고 가정해 보겠습니다.

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

ORDER BY 절을 포함하지 않으면 쿼리는 WHERE 절을 충족하는 Students 테이블에서 임의의 25개 레코드 집합을 반환합니다.

TOP 조건자는 같은 값 중에서 선택하지 않습니다. 앞의 예제에서 25등급과 26등급 평균이 같으면 쿼리는 26개의 레코드를 반환합니다.

PERCENT 예약 단어를 사용하여 ORDER BY 절로 지정된 범위의 맨 위 또는 아래쪽에 있는 특정 비율의 레코드를 반환할 수도 있습니다. 상위 25명의 학생 대신 수업의 하위 10%를 원한다고 가정합니다.

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

ASC 조건자는 아래쪽 값의 반환을 지정합니다. TOP 뒤에 있는 값은 부호 없는 정수여야 합니다.

TOP은 쿼리를 업데이트할 수 있는지 여부에 영향을 주지 않습니다.

table

레코드를 검색할 테이블의 이름입니다.

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.