sql – 如何使用存储过程使用while选择一个值
发布时间:2020-12-12 06:38:19 所属栏目:MsSql教程 来源:网络整理
导读:我有一个SQL表名类别.这是结构. slno Category Uppercategory1 Mouse Computer2 Computer Electronics3 Electronics END4 END - 这里鼠标在uppercategory计算机,然后是uppercategory Electronics中的计算机和电子设备是最后一个uppercategory,因为具有upperca
我有一个SQL表名类别.这是结构.
slno Category Uppercategory 1 Mouse Computer 2 Computer Electronics 3 Electronics END 4 END - 这里鼠标在uppercategory计算机,然后是uppercategory Electronics中的计算机和电子设备是最后一个uppercategory,因为具有uppercategory上层类别的电子设备需要得到上层类别为END的最后一类(电子设备). USE [Database1] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[kt_category] @Dcat AS NVARCHAR(250) AS DECLARE @tmp TABLE (cater NVARCHAR(255)) BEGIN INSERT INTO @tmp SELECT UPPERCATEGORY FROM CATEGORY where CATEGORY=@Dcat while( SELECT UPPERCATEGORY FROM CATEGORY )= 'END' RETURN END 解决方法您还可以使用递归查询来实现此目的.;WITH R AS (SELECT *,1 AS Level FROM CATEGORY WHERE Category = @Dcat UNION ALL SELECT C.*,R.Level + 1 FROM CATEGORY C JOIN R ON R.Uppercategory = C.Category) SELECT TOP 1 * FROM R ORDER BY Level DESC 你也可以使用 SELECT TOP 1 * FROM R WHERE Uppercategory = 'End' ORDER BY Level 作为最后的查询.这与您问题中的代码具有更接近的语义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sqlserver 大数据量的insert、delete操作优化
- 命令行启动mssqlserver服务的方法示例
- SQL Server 不存在或访问被拒绝
- sql-server – Sql Server – 如何获取上次服务器重启(DMV重
- 将字段添加到已存在的数据库
- 系统管理 – 开发人员应该获得域管理员/ DBA访问权限吗?
- sql-server – 由多个用户编辑数据库记录
- MSSqlserver 恢复sa密码及 删除builtin\administrators
- 帆软报表FineReport SQLServer数据库连接失败常见解决方案
- sql – update x set y = null需要很长时间