데이터 베이스 MySQL 튜토리얼 SQL Server의 하위 쿼리에서 행을 효율적으로 연결하려면 어떻게 해야 합니까?

SQL Server의 하위 쿼리에서 행을 효율적으로 연결하려면 어떻게 해야 합니까?

Jan 22, 2025 am 12:15 AM

How Can I Efficiently Concatenate Rows from a Subquery in SQL Server?

SQL Server 행 연결: 사용자 정의 기능과 최신 접근 방식

이 문서에서는 SQL Server 내 하위 쿼리의 행을 효율적으로 연결하여 단일 구분 문자열을 생성하는 두 가지 방법을 보여줍니다. 첫 번째는 다양한 SQL Server 버전에 걸쳐 호환성을 제공하는 사용자 지정 함수를 사용합니다. 두 번째는 SQL Server 2017 이상에서 사용할 수 있는 STRING_AGG 기능을 활용하여 향상된 성능을 제공합니다.

방법 1: JoinRows 사용자 정의 함수

더 넓은 SQL Server 버전 호환성을 위해 사용자 정의 기능이 깔끔한 솔루션을 제공합니다. 아래 JoinRows 함수는 구분 문자와 테이블을 입력으로 사용하여 연결된 문자열을 반환합니다.

CREATE FUNCTION JoinRows (
    @Separator CHAR(1),
    @InputTable TABLE (ID INT, Value VARCHAR(MAX))
)
RETURNS VARCHAR(MAX)
BEGIN
    RETURN (
        SELECT COALESCE(@Separator + I.Value, I.Value)
        FROM @InputTable AS I
        FOR XML PATH('')
    );
END;
로그인 후 복사

이 기능은 다음과 같이 쿼리에 통합될 수 있습니다.

SELECT
    VehicleID,
    Name,
    JoinRows(', ', (SELECT City FROM Location WHERE VehicleID = Vehicles.VehicleID)) AS Locations
FROM Vehicles;
로그인 후 복사

방법 2: STRING_AGG(SQL Server 2017 이상)

SQL Server 2017 및 후속 버전의 경우 내장된 STRING_AGG 기능이 더욱 간편하고 빠른 접근 방식을 제공합니다.

SELECT
    VehicleID,
    Name,
    STRING_AGG(City, ', ') WITHIN GROUP (ORDER BY City) AS Locations
FROM Vehicles
INNER JOIN Location ON Vehicles.VehicleID = Location.VehicleID
GROUP BY VehicleID, Name;
로그인 후 복사

이 방법은 VehiclesLocation 테이블을 직접 조인하고 STRING_AGG을 사용하여 City으로 분할된 VehicleID 값을 집계하여 최신 SQL Server 인스턴스에 대한 보다 효율적인 솔루션을 제공합니다. 연결된 도시의 예측 가능한 순서를 위해 WITHIN GROUP (ORDER BY City) 추가에 유의하세요. 이는 선택 사항이지만 일관된 결과를 얻으려면 권장됩니다. 올바른 집계를 보장하려면 GROUP BY 절도 필요합니다.

SQL Server 버전 및 성능 요구 사항에 가장 적합한 방법을 선택하세요. 이전 버전의 경우 사용자 정의 기능이 필요합니다. 최신 버전의 경우 STRING_AGG가 상당한 성능 이점을 제공합니다.

위 내용은 SQL Server의 하위 쿼리에서 행을 효율적으로 연결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Docker에서 MySQL 메모리 사용을 줄입니다 Docker에서 MySQL 메모리 사용을 줄입니다 Mar 04, 2025 pm 03:52 PM

Docker에서 MySQL 메모리 사용을 줄입니다

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Mar 19, 2025 pm 03:51 PM

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다. MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다. Mar 04, 2025 pm 04:01 PM

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음) Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음) Mar 04, 2025 pm 03:54 PM

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)

sqlite 란 무엇입니까? 포괄적 인 개요 sqlite 란 무엇입니까? 포괄적 인 개요 Mar 04, 2025 pm 03:55 PM

sqlite 란 무엇입니까? 포괄적 인 개요

MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드 MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드 Mar 04, 2025 pm 03:49 PM

MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)? 인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)? Mar 21, 2025 pm 06:28 PM

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? Mar 18, 2025 pm 12:01 PM

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까?

See all articles