sql递归

摘要:
--单表递归由于项目中经常用到,随笔以作下次使用例如:找ProductType表下ID为1的分类的所有子级withresultas--result为别名(select*fromTB_ProductTypewhereId=1--查询ID为1的数据unionallselectTB_ProductType.*fromtb_productType,resultwhereresult.ID=TB_Produ

--单表递归 由于项目中经常用到 , 随笔以作下次使用

例如:找ProductType表 下ID为1的分类的所有子级

with result as --result为别名
(
select * from TB_ProductType where Id=1 --查询ID为1 的数据
union all
select TB_ProductType.* from tb_productType, result where result.ID = TB_ProductType.ParentID ---递归--找到ID为1的分类的所有下级
)
select * from result --注意 上面只是获取了递归的对象 所以这里必须要查询一次

--递归删除 / 更新

with result as
(
select * from TB_ProductType where Id=1
union all
select TB_ProductType.* from tb_productType, result where result.ID = TB_ProductType.ParentID
)
update TB_ProductType set name = '' where id in ( select id from result) --

免责声明:文章转载自《sql递归》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EF架构~关系表插入应该写在事务里,但不应该是分布式事务POST提交数据方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sql查询语句详解

SQL查询语句详解(一) 一、基本语法 Select select_list From table_name Where condition_expression Group by group_columns having condition_expression Order by sort_columns 二、查询实例 查询所有字段...

SQL Server 一些使用小技巧

1、查询的时候把某一个字段的值拼接成字符串 以下是演示数据。 第一种方式:使用自定义变量 DECLARE @Names NVARCHAR(128) SET @Names='' -- 需要先赋值为空字符串,不然结果会是 null SELECT @Names=@Names+S_Name+',' -- S_Name 类型为...

SQLServer 的存储过程与java交互

一、   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。 存储过程相对于其他的数据库访问方法有以下的优点:    (1)重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。     (2)...

MySQL存储过程之事务管理

  MySQL存储过程之事务管理 ACID:Atomic、Consistent、Isolated、Durable 存储程序提供了一个绝佳的机制来定义、封装和管理事务。 1,MySQL的事务支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: Java代码 1         MyISAM:不支持事务,用于只读程序提高性能 ...

SQLServer查看分区表详细信息

SQL查看分区内记录个数,常规方法需要知道分区函数然后再显示,网上看到一个一句话显示的方法 select convert(varchar(50), ps.name ) aspartition_scheme, p.partition_number, convert(varchar(10), ds2.name ) asfilegroup, con...

[转载]oracle 存储过程的基本语法及注意事项

原文地址:oracle 存储过程的基本语法及注意事项作者:简单爱  oracle 存储过程的基本语法及注意事项 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 (     参数1 IN NUMBER,     参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN...