데이터 베이스 MySQL 튜토리얼 使用公用表表达式的递归查询

使用公用表表达式的递归查询

Jun 07, 2016 pm 03:56 PM
사용 소개하다 마이크로소프트 질문 표현 재귀

微软从SQL2005起引入了CTE(Common Table Expression)以强化T-SQL。 公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。 当某个查询引用递

  微软从SQL2005起引入了CTE(Common Table Expression)以强化T-SQL。

  公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。

  当某个查询引用递归 CTE 时,它即被称为递归查询。递归查询通常用于返回分层数据,例如:显示某个组织图中的雇员或物料清单方案(其中父级产品有一个或多个组件,而那些组件可能还有子组件,或者是其他父级产品的组件)中的数据。

  递归 CTE 可以极大地简化在 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句中运行递归查询所需的代码。在 SQL Server 的早期版本中,递归查询通常需要使用临时表、游标和逻辑来控制递归步骤流。有关公用表表达式的详细信息,请参阅使用公用表表达式。

伪代码和语义

————————————————————————————

递归 CTE 结构必须至少包含一个定位点成员和一个递归成员。以下伪代码显示了包含一个定位点成员和一个递归成员的简单递归 CTE 的组件。

WITH cte_name ( column_name [,...n] )

AS

(

CTE_query_definition –- Anchor member is defined.

UNION ALL

CTE_query_definition –- Recursive member is defined referencing cte_name.

)

-- Statement using the CTE

SELECT * FROM cte_name

递归执行的语义如下:

  1. 将 CTE 表达式拆分为定位点成员和递归成员。
  2. 运行定位点成员,创建第一个调用或基准结果集 (T0)。
  3. 运行递归成员,将 Ti 作为输入,将 Ti+1 作为输出。
  4. 重复步骤 3,直到返回空集。
  5. 返回结果集。这是对 T0 到 Tn 执行 UNION ALL 的结果。

    示例

    ————————————————————————————

    原表:

    \

     现在有一个需求,要查询出某个省下面的所有市和区(查询结果包含省)。如果只使用SQL语句来实现,需要使用到游标、临时表等技术。但在SQL Server2005中还可以使用CTE来实现。

    WITH district

    AS

    (

    --获得第一个结果集,并更新最终结果集

    SELECT * FROM t_tree WHERE id = 0

    UNION ALL

    --下面的select语句首先会根据从上一个查询结果集中获得的id值来查询parent_id

    --字段的值,然后district就会变当前的查询结果集,并继续执行下面的select 语句

    --如果结果集不为null,则与最终的查询结果合并,同时用合并的结果更新最终的查

    --询结果;否则停止执行。最后district的结果集就是最终结果集。

    SELECT a.* FROM t_tree aINNER JOIN district bONa.parent_id = b.id

    )

    SELECT * FROM district

    查询结果:

    \

    有关使用公用表表达式的详细信息,请参阅使用公用表表达式的递归查询。

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

C++ 함수의 재귀 구현: 재귀 깊이에 제한이 있나요? C++ 함수의 재귀 구현: 재귀 깊이에 제한이 있나요? Apr 23, 2024 am 09:30 AM

C++ 함수의 재귀 깊이에는 제한이 있습니다. 이 제한을 초과하면 스택 오버플로 오류가 발생합니다. 제한 값은 시스템과 컴파일러에 따라 다르지만 일반적으로 1,000에서 10,000 사이입니다. 솔루션에는 다음이 포함됩니다. 1. 테일 재귀 최적화, 2. 테일 호출, 3. 반복 구현.

Microsoft의 전체 화면 팝업은 Windows 10 사용자에게 서둘러 Windows 11로 업그레이드하도록 촉구합니다. Microsoft의 전체 화면 팝업은 Windows 10 사용자에게 서둘러 Windows 11로 업그레이드하도록 촉구합니다. Jun 06, 2024 am 11:35 AM

6월 3일자 뉴스에 따르면, 마이크로소프트는 모든 윈도우 10 사용자에게 적극적으로 전체 화면 알림을 보내 윈도우 11 운영체제로의 업그레이드를 독려하고 있다. 이 이동에는 하드웨어 구성이 새 시스템을 지원하지 않는 장치가 포함됩니다. 2015년부터 Windows 10은 거의 70%의 시장 점유율을 차지하며 Windows 운영 체제로서의 지배력을 확고히 자리 잡았습니다. 하지만 시장점유율은 82%를 훨씬 웃돌며, 2021년 출시 예정인 윈도우 11보다 시장점유율이 훨씬 높다. Windows 11이 출시된 지 거의 3년이 지났지만 시장 침투 속도는 여전히 느립니다. Microsoft는 Windows 10에 대한 기술 지원을 2025년 10월 14일 이후 종료한다고 발표했습니다.

마이크로소프트, 보안 강화, 잠금 화면 최적화 등 Win11 8월 누적 업데이트 출시 마이크로소프트, 보안 강화, 잠금 화면 최적화 등 Win11 8월 누적 업데이트 출시 Aug 14, 2024 am 10:39 AM

8월 14일 이 사이트의 소식에 따르면 오늘 8월 패치 화요일 이벤트 당일 마이크로소프트는 22H2와 23H2용 KB5041585 업데이트, 21H2용 KB5041592 업데이트를 포함해 윈도우 11 시스템용 누적 업데이트를 출시했다. 위 장비가 8월 누적 업데이트로 설치된 후, 본 사이트에 첨부된 버전번호 변경 사항은 다음과 같습니다. 21H2 장비 설치 후, 장비 설치 후 버전번호가 Build22000.314722H2로 증가되었습니다. Windows 1121H2용 KB5041585 업데이트의 주요 내용은 다음과 같습니다.

BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까? BTCC 튜토리얼: BTCC 교환에서 MetaMask 지갑을 바인딩하고 사용하는 방법은 무엇입니까? Apr 26, 2024 am 09:40 AM

MetaMask(중국어로 Little Fox Wallet이라고도 함)는 무료이며 호평을 받는 암호화 지갑 소프트웨어입니다. 현재 BTCC는 MetaMask 지갑에 대한 바인딩을 지원합니다. 바인딩 후 MetaMask 지갑을 사용하여 빠르게 로그인하고 가치를 저장하고 코인을 구매할 수 있으며 첫 바인딩에는 20 USDT 평가판 보너스도 받을 수 있습니다. BTCCMetaMask 지갑 튜토리얼에서는 MetaMask 등록 및 사용 방법, BTCC에서 Little Fox 지갑을 바인딩하고 사용하는 방법을 자세히 소개합니다. MetaMask 지갑이란 무엇입니까? 3천만 명 이상의 사용자를 보유한 MetaMask Little Fox Wallet은 오늘날 가장 인기 있는 암호화폐 지갑 중 하나입니다. 무료로 사용할 수 있으며 확장으로 네트워크에 설치할 수 있습니다.

Microsoft Win11의 7z 및 TAR 파일 압축 기능이 24H2에서 23H2/22H2 버전으로 다운그레이드되었습니다. Microsoft Win11의 7z 및 TAR 파일 압축 기능이 24H2에서 23H2/22H2 버전으로 다운그레이드되었습니다. Apr 28, 2024 am 09:19 AM

4월 27일 이 사이트의 소식에 따르면 마이크로소프트는 이달 초 카나리아 및 개발자 채널에 윈도우 11 빌드 26100 프리뷰 버전 업데이트를 출시했는데, 이는 윈도우 1124H2 업데이트의 후보 RTM 버전이 될 것으로 예상된다. 새 버전의 주요 변경 사항은 파일 탐색기, Copilot 통합, PNG 파일 메타데이터 편집, TAR 및 7z 압축 파일 생성 등입니다. @PhantomOfEarth는 Microsoft가 TAR 및 7z 압축 파일 생성과 같은 24H2 버전(게르마늄)의 일부 기능을 23H2/22H2(니켈) 버전으로 위임했다는 사실을 발견했습니다. 다이어그램에 표시된 것처럼 Windows 11은 TAR의 기본 생성을 지원합니다.

C++ 함수 재귀에 대한 자세한 설명: 문자열 처리에 재귀 적용 C++ 함수 재귀에 대한 자세한 설명: 문자열 처리에 재귀 적용 Apr 30, 2024 am 10:30 AM

재귀 함수는 문자열 처리 문제를 해결하기 위해 자신을 반복적으로 호출하는 기술입니다. 무한 재귀를 방지하기 위해서는 종료 조건이 필요합니다. 재귀는 문자열 반전 및 회문 검사와 같은 작업에 널리 사용됩니다.

Microsoft는 2024년 하반기에 Windows 11에서 NTLM을 단계적으로 폐지하고 Kerberos 인증으로 완전히 전환할 계획입니다. Microsoft는 2024년 하반기에 Windows 11에서 NTLM을 단계적으로 폐지하고 Kerberos 인증으로 완전히 전환할 계획입니다. Jun 09, 2024 pm 04:17 PM

2024년 하반기, 마이크로소프트 공식 보안 블로그는 보안 커뮤니티의 요청에 대한 응답으로 메시지를 게시했습니다. 회사는 보안 강화를 위해 2024년 하반기 출시되는 윈도우 11에서 NTLM(NTLAN Manager) 인증 프로토콜을 삭제할 계획이다. 이전 설명에 따르면 Microsoft는 이전에도 비슷한 조치를 취한 적이 있습니다. 작년 10월 12일 Microsoft는 공식 보도 자료를 통해 NTLM 인증 방법을 단계적으로 폐지하고 더 많은 기업과 사용자가 Kerberos로 전환하도록 유도하는 전환 계획을 제안했습니다. NTLM 인증을 끈 후 유선 응용 프로그램 및 서비스에 문제가 발생할 수 있는 기업을 돕기 위해 Microsoft는 IAKerb 및

C++ 재귀에 대한 초보자 가이드: 기초 구축 및 직관 개발 C++ 재귀에 대한 초보자 가이드: 기초 구축 및 직관 개발 May 01, 2024 pm 05:36 PM

재귀는 문제를 해결하기 위해 함수가 자신을 호출할 수 있도록 하는 강력한 기술입니다. C++에서 재귀 함수는 두 가지 핵심 요소, 즉 기본 사례(재귀 중지 시기를 결정함)와 재귀 호출(문제를 여러 단계로 나누는 경우)로 구성됩니다. 더 작은 하위 문제). 기초를 이해하고 계승 계산, 피보나치 수열, 이진 트리 순회 등의 실제 예제를 연습함으로써 재귀적 직관을 구축하고 자신 있게 코드에서 사용할 수 있습니다.

See all articles