SQL数据库实现递归查询的几种代码方法
SQL数据库实现递归查询的几种代码方法 表结构 ProductCategory CategoryID,Level,ParentCategoryID 数据 1,1,-1 2,1,-1 3,2,1 4,3,3 5,2,2 6,4,5 T-SQL WITH CategoryTemp(CategoryID,ParentCategoryID)--临时表用来保存查到的Category ( SELECT CategoryI
SQL数据库实现递归查询的几种代码方法
表结构
ProductCategory
CategoryID,Level,ParentCategoryID
数据
1,1,-1
2,1,-1
3,2,1
4,3,3
5,2,2
6,4,5
T-SQL
WITH CategoryTemp(CategoryID,ParentCategoryID)--临时表用来保存查到的Category
(
SELECT CategoryID,ParentCategoryID FROM ProductCategory WHERE ParentCategoryID
UNION ALL--查询N层
SELECT pc.CategoryID,ParentCategoryID FROM ProductCategory pc
LEFT JOIN CategoryTemp ct ON pc.ParentCategoryID=ct.CategoryID
WHERE ParentCategoryID>0--因为第一层前面已经查出来了,所以这里把第一层筛选掉
)
SELECT CategoryID,ParentCategoryID FROM CategoryTemp
结果
1,-1
2,-1
3,1
4,3
5,2
6,5
如果把ParentCategoryID赋为2,结果则为
5,2
6,5
实例
ID 是否为部门 部门名 上级ID
1 y 部门0 1
31 y 部门1 1
32 n 张三 31
33 n 李二 31
34 y 部门2 31
35 n 王五 34
35 y 部门3 34
36 n 小三 35
我想找询 ID 值为 35 下级的所有人员包括下级部门的所有人员
--创建查询函数
create function f_id(
@id int --要查询的id
)returns @re table(id int,level int)
as
begin
declare @l int
set @l=0
insert @re select id,@l
from 表
where 上级id=@id
while @@rowcount> 0
begin
set @l=@l+1
insert @re select a.id,@l
from 表 a join @re b on a.上级id=b.id and b.level=@l-1
end
return
end
go
--调用函数进行查询
select a.* from 表 a join f_id(35) b on a.id=b.id
联合查询
--测试数据
create table 表(ID int,是否为部门 char(1),部门名 varchar(10),上级ID int)
insert 表 select 1 , 'y ', '部门0 ' ,1
union all select 31, 'y ', '部门1 ' ,1
union all select 32, 'n ', '张三 ' ,31
union all select 33, 'n ', '李二 ' ,31
union all select 34, 'y ', '部门2 ',31
union all select 35, 'n ', '王五 ' ,34
union all select 35, 'y ', '部门3 ',34
union all select 36, 'n ', '小三 ' ,35
go
--创建查询函数
create function f_id(
@id int --要查询的id
)returns @re table(id int,level int)
as
begin
declare @l int
set @l=0
insert @re select id,@l
from 表
where 上级id=@id
while @@rowcount> 0
begin
set @l=@l+1
insert @re select a.id,@l
from 表 a join @re b on a.上级id=b.id and b.level=@l-1
end
return
end
go

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Les jeux mobiles font désormais partie intégrante de la vie des gens avec le développement de la technologie. Il a attiré l'attention de nombreux joueurs avec sa jolie image d'œuf de dragon et son processus d'éclosion intéressant, et l'un des jeux qui a beaucoup attiré l'attention est la version mobile de Dragon Egg. Pour aider les joueurs à mieux cultiver et faire grandir leurs propres dragons dans le jeu, cet article vous présentera comment faire éclore des œufs de dragon dans la version mobile. 1. Choisissez le type d'œuf de dragon approprié. Les joueurs doivent choisir soigneusement le type d'œuf de dragon qu'ils aiment et qui leur conviennent, en fonction des différents types d'attributs et de capacités d'œuf de dragon fournis dans le jeu. 2. Améliorez le niveau de la machine d'incubation. Les joueurs doivent améliorer le niveau de la machine d'incubation en accomplissant des tâches et en collectant des accessoires. Le niveau de la machine d'incubation détermine la vitesse d'éclosion et le taux de réussite de l'éclosion. 3. Collectez les ressources nécessaires à l'éclosion. Les joueurs doivent être dans le jeu.

La définition de la taille de la police est devenue une exigence de personnalisation importante à mesure que les téléphones mobiles deviennent un outil important dans la vie quotidienne des gens. Afin de répondre aux besoins des différents utilisateurs, cet article présentera comment améliorer l'expérience d'utilisation du téléphone mobile et ajuster la taille de la police du téléphone mobile grâce à des opérations simples. Pourquoi avez-vous besoin d'ajuster la taille de la police de votre téléphone mobile - L'ajustement de la taille de la police peut rendre le texte plus clair et plus facile à lire - Adapté aux besoins de lecture des utilisateurs d'âges différents - Pratique pour les utilisateurs malvoyants qui souhaitent utiliser la taille de la police fonction de configuration du système de téléphonie mobile - Comment accéder à l'interface des paramètres du système - Dans Rechercher et entrez l'option "Affichage" dans l'interface des paramètres - recherchez l'option "Taille de la police" et ajustez-la. application - téléchargez et installez une application prenant en charge l'ajustement de la taille de la police - ouvrez l'application et entrez dans l'interface des paramètres appropriée - en fonction de l'individu

Le film pour téléphone portable est devenu l'un des accessoires indispensables avec la popularité des smartphones. Pour prolonger sa durée de vie, choisissez un film de téléphone portable adapté pour protéger l'écran du téléphone portable. Pour aider les lecteurs à choisir le film pour téléphone portable le plus approprié, cet article présentera plusieurs points clés et conseils pour l'achat d'un film pour téléphone portable. Comprendre les matériaux et les types de films pour téléphones portables : film PET, TPU, etc. Les films pour téléphones portables sont constitués de divers matériaux, dont le verre trempé. Le film PET est relativement doux, le film en verre trempé a une bonne résistance aux rayures et le TPU a de bonnes performances antichoc. Cela peut être décidé en fonction des préférences et des besoins personnels lors du choix. Tenez compte du degré de protection de l'écran. Différents types de films pour téléphones portables ont différents degrés de protection d'écran. Le film PET joue principalement un rôle anti-rayures, tandis que le film en verre trempé a une meilleure résistance aux chutes. Vous pouvez choisir d'avoir mieux

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.

Depuis le lancement du ChatGLM-6B le 14 mars 2023, les modèles de la série GLM ont reçu une large attention et une grande reconnaissance. Surtout après que ChatGLM3-6B soit open source, les développeurs sont pleins d'attentes pour le modèle de quatrième génération lancé par Zhipu AI. Cette attente a finalement été pleinement satisfaite avec la sortie du GLM-4-9B. La naissance du GLM-4-9B Afin de donner aux petits modèles (10B et moins) des capacités plus puissantes, l'équipe technique de GLM a lancé ce nouveau modèle open source de la série GLM de quatrième génération : GLM-4-9B après près de six mois de exploration. Ce modèle compresse considérablement la taille du modèle tout en garantissant la précision, et offre une vitesse d'inférence plus rapide et une efficacité plus élevée. L’exploration de l’équipe technique du GLM n’a pas

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

Définition et optimisation récursive : Récursif : Une fonction s'appelle en interne pour résoudre des problèmes difficiles qui peuvent être décomposés en sous-problèmes plus petits. Récursion de queue : la fonction effectue tous les calculs avant d'effectuer un appel récursif, qui peut être optimisé en boucle. Condition d'optimisation de la récursion de queue : l'appel récursif est la dernière opération. Les paramètres d'appel récursif sont les mêmes que les paramètres d'appel d'origine. Exemple pratique : Calculer factoriel : La fonction auxiliaire factorial_helper implémente l'optimisation de la récursion de queue, élimine la pile d'appels et améliore l'efficacité. Calculer les nombres de Fibonacci : la fonction récursive de queue fibonacci_helper utilise l'optimisation pour calculer efficacement les nombres de Fibonacci.
