Maison base de données tutoriel 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

    查询结果:

    \

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Implémentation récursive des fonctions C++ : existe-t-il une limite à la profondeur de récursion ? Implémentation récursive des fonctions C++ : existe-t-il une limite à la profondeur de récursion ? Apr 23, 2024 am 09:30 AM

La profondeur de récursion des fonctions C++ est limitée et le dépassement de cette limite entraînera une erreur de débordement de pile. La valeur limite varie selon les systèmes et les compilateurs, mais se situe généralement entre 1 000 et 10 000. Les solutions incluent : 1. Optimisation de la récursion de queue ; 2. Appel de queue ; 3. Implémentation itérative ;

La fenêtre contextuelle plein écran de Microsoft exhorte les utilisateurs de Windows 10 à se dépêcher et à passer à Windows 11 La fenêtre contextuelle plein écran de Microsoft exhorte les utilisateurs de Windows 10 à se dépêcher et à passer à Windows 11 Jun 06, 2024 am 11:35 AM

Selon l'actualité du 3 juin, Microsoft envoie activement des notifications en plein écran à tous les utilisateurs de Windows 10 pour les encourager à passer au système d'exploitation Windows 11. Ce déplacement concerne les appareils dont les configurations matérielles ne prennent pas en charge le nouveau système. Depuis 2015, Windows 10 occupe près de 70 % des parts de marché, établissant ainsi sa domination en tant que système d'exploitation Windows. Cependant, la part de marché dépasse largement la part de marché de 82 %, et la part de marché dépasse largement celle de Windows 11, qui sortira en 2021. Même si Windows 11 est lancé depuis près de trois ans, sa pénétration sur le marché est encore lente. Microsoft a annoncé qu'il mettrait fin au support technique de Windows 10 après le 14 octobre 2025 afin de se concentrer davantage sur

Tutoriel BTCC : Comment lier et utiliser le portefeuille MetaMask sur l'échange BTCC ? Tutoriel BTCC : Comment lier et utiliser le portefeuille MetaMask sur l'échange BTCC ? Apr 26, 2024 am 09:40 AM

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

Microsoft publie la mise à jour cumulative Win11 août : amélioration de la sécurité, optimisation de l'écran de verrouillage, etc. Microsoft publie la mise à jour cumulative Win11 août : amélioration de la sécurité, optimisation de l'écran de verrouillage, etc. Aug 14, 2024 am 10:39 AM

Selon les informations de ce site du 14 août, lors de la journée d'événement Patch Tuesday d'aujourd'hui, Microsoft a publié des mises à jour cumulatives pour les systèmes Windows 11, notamment la mise à jour KB5041585 pour 22H2 et 23H2 et la mise à jour KB5041592 pour 21H2. Après l'installation de l'équipement mentionné ci-dessus avec la mise à jour cumulative d'août, les changements de numéro de version attachés à ce site sont les suivants : Après l'installation de l'équipement 21H2, le numéro de version est passé à Build22000.314722H2. le numéro de version est passé à Build22621.403723H2. Après l'installation de l'équipement, le numéro de version est passé à Build22631.4037. Le contenu principal de la mise à jour KB5041585 pour Windows 1121H2 est le suivant : Amélioration : Amélioré.

La fonction de compression des fichiers 7z et TAR de Microsoft Win11 a été rétrogradée des versions 24H2 aux versions 23H2/22H2 La fonction de compression des fichiers 7z et TAR de Microsoft Win11 a été rétrogradée des versions 24H2 aux versions 23H2/22H2 Apr 28, 2024 am 09:19 AM

Selon les informations de ce site le 27 avril, Microsoft a publié la mise à jour de la version préliminaire de Windows 11 Build 26100 sur les canaux Canary et Dev plus tôt ce mois-ci, qui devrait devenir une version RTM candidate de la mise à jour Windows 1124H2. Les principaux changements de la nouvelle version sont l'explorateur de fichiers, l'intégration de Copilot, l'édition des métadonnées des fichiers PNG, la création de fichiers compressés TAR et 7z, etc. @PhantomOfEarth a découvert que Microsoft a délégué certaines fonctions de la version 24H2 (Germanium) à la version 23H2/22H2 (Nickel), comme la création de fichiers compressés TAR et 7z. Comme le montre le schéma, Windows 11 prendra en charge la création native de TAR

Explication détaillée de la récursivité des fonctions C++ : application de la récursivité dans le traitement des chaînes Explication détaillée de la récursivité des fonctions C++ : application de la récursivité dans le traitement des chaînes Apr 30, 2024 am 10:30 AM

Une fonction récursive est une technique qui s'appelle à plusieurs reprises pour résoudre un problème de traitement de chaînes. Cela nécessite une condition de terminaison pour empêcher une récursion infinie. La récursivité est largement utilisée dans des opérations telles que l'inversion de chaînes et la vérification du palindrome.

Microsoft prévoit de supprimer progressivement NTLM dans Windows 11 au second semestre 2024 et de passer entièrement à l'authentification Kerberos Microsoft prévoit de supprimer progressivement NTLM dans Windows 11 au second semestre 2024 et de passer entièrement à l'authentification Kerberos Jun 09, 2024 pm 04:17 PM

Au second semestre 2024, le blog officiel de sécurité Microsoft a publié un message en réponse à l'appel de la communauté de la sécurité. La société prévoit d'éliminer le protocole d'authentification NTLAN Manager (NTLM) dans Windows 11, publié au second semestre 2024, pour améliorer la sécurité. Selon des explications précédentes, Microsoft a déjà pris des mesures similaires auparavant. Le 12 octobre dernier, Microsoft a proposé un plan de transition dans un communiqué de presse officiel visant à supprimer progressivement les méthodes d'authentification NTLM et à inciter davantage d'entreprises et d'utilisateurs à passer à Kerberos. Pour aider les entreprises susceptibles de rencontrer des problèmes avec les applications et services câblés après avoir désactivé l'authentification NTLM, Microsoft fournit IAKerb et

Un guide du débutant sur la récursivité C++ : construire les bases et développer l'intuition Un guide du débutant sur la récursivité C++ : construire les bases et développer l'intuition May 01, 2024 pm 05:36 PM

La récursion est une technique puissante qui permet à une fonction de s'appeler elle-même pour résoudre un problème. En C++, une fonction récursive se compose de deux éléments clés : le cas de base (qui détermine le moment où la récursion s'arrête) et l'appel récursif (qui divise le problème en sous-problèmes plus petits). En comprenant les bases et en pratiquant des exemples pratiques tels que les calculs factoriels, les séquences de Fibonacci et les parcours d'arbres binaires, vous pouvez construire votre intuition récursive et l'utiliser dans votre code en toute confiance.

See all articles