> 데이터 베이스 > SQL > SQL Server는 CROSS APPLY 및 OUTER APPLY를 사용하여 연결 쿼리를 구현합니다.

SQL Server는 CROSS APPLY 및 OUTER APPLY를 사용하여 연결 쿼리를 구현합니다.

WBOY
풀어 주다: 2022-08-26 14:07:24
앞으로
2343명이 탐색했습니다.

이 기사에서는 SQL 서버에 대한 관련 지식을 제공합니다. 주로 CROSS APPLY 및 OUTER APPLY를 사용하여 연결 쿼리를 구현하는 방법을 소개합니다. 샘플 코드를 통해 자세히 소개하겠습니다. 모두를 돕습니다.

SQL Server는 CROSS APPLY 및 OUTER APPLY를 사용하여 연결 쿼리를 구현합니다.

추천 학습: "SQL Tutorial"

Overview

CROSS APPLY 및 OUTER APPLY가 수행할 수 있는 작업:
왼쪽 테이블의 하나의 레코드가 오른쪽 테이블의 여러 레코드와 연결되면 하나를 제어해야 합니다. 오른쪽 테이블에 하나 이상의 레코드가 있습니다. 레코드가 왼쪽 테이블과 일치합니다.

Student(학생 테이블)와 Score(점수 테이블) 두 개의 테이블이 있습니다. 데이터는 다음과 같습니다.

1. CROSS APPLY

ROSS APPLY는 "교차 애플리케이션"을 의미합니다. 왼쪽 테이블 , , 그리고 오른쪽 테이블의 각 레코드가 왼쪽 테이블의 현재 레코드와 일치됩니다. 일치에 성공하면 왼쪽 테이블과 오른쪽 테이블의 레코드가 하나의 레코드로 병합되어 출력되고, 일치에 실패하면 왼쪽 테이블과 오른쪽 테이블의 레코드가 삭제됩니다. (INNER JOIN과 유사)

각 학생의 마지막 두 시험 점수를 쿼리합니다.

SELECT T1.StudentNo, T1.Name, T2.ExamScore, T2.ExamDate FROM Student AS T1
CROSS APPLY
(
    SELECT TOP 2 * FROM Score AS T
    WHERE T1.StudentNo = T.StudentNo
    ORDER BY T.ExamDate DESC
) AS T2
로그인 후 복사

결과:

2. OUTER APPLY

OUTER APPLY는 "외부 응용 프로그램"을 의미하며, 이는 CROSS APPLY의 원칙과 일치합니다. 단, 일치에 실패하면 왼쪽 테이블과 오른쪽 테이블도 일치합니다. 하나의 레코드 출력으로 병합되지만 오른쪽 테이블의 출력 필드는 null입니다. (LEFT OUTER JOIN과 유사)

각 학생의 최근 두 시험 점수를 쿼리하고, 시험에 응시하지 않은 학생의 점수를 null로 채움

SELECT T1.StudentNo, T1.Name, T2.ExamScore, T2.ExamDate FROM Student AS T1
OUTER APPLY
(
    SELECT TOP 2 * FROM Score AS T
    WHERE T1.StudentNo = T.StudentNo
    ORDER BY T.ExamDate DESC
) AS T2
로그인 후 복사

결과:

3. 적용 시나리오

1. 테이블 반환 함수 결합 사용법:

다음과 같은 테이블이 있습니다.

단 하나의 필드 번호가 있는 매우 간단한 테이블입니다. 이 필드의 int 숫자를 2진수 8진수 및 16진수 값으로 변환하고 싶습니다. 기본 변환을 위해 미리 만들어진 테이블 반환 함수가 있습니다.

SELECT * FROM #T a CROSS APPLY [dbo].[F_TConversion](a.num)
로그인 후 복사

요약: 쿼리 결과 집합이 필드 값을 처리하기 위해 테이블 ​​반환 함수를 사용해야 하는 경우 CROSS APPLY~

2를 사용하세요. 상위 하위 쿼리 사용법:

학생 테이블이 있습니다. , 이름, 과목, 점수의 세 가지 필드는 다음과 같습니다.

중국어 1위, 수학 2위, 영어 3위의 이름, 과목, 점수를 보고 싶습니다. . Cross Apply를 이용한 구현 방법은 다음과 같습니다.

SELECT b.* FROM (
    select Subject='Chiness',num=1 union all
    select 'Math',2 union all
    select 'English',3) a 
cross apply 
    (select top(a.num) * from Students where Subject=a.Subject ) b
로그인 후 복사

추천 학습: "SQL Tutorial"

위 내용은 SQL Server는 CROSS APPLY 및 OUTER APPLY를 사용하여 연결 쿼리를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
sql
원천:jb51.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿