MSSQL中递归SQL查询语句实例说明-
一张表(ColumnTable)的结构如下图所示
当前需要实现的功能:通过Number的值为67来获取当前的节点ID、父节点ID
with znieyu as
(
select c.Id,c.FatherId,0 as lv1 from ColumnTable c where c.Number=67
union all
select c.Id,c.FatherId,lv1-1 from znieyu z
inner join ColumnTable c
on z.FatherId=c.Id
)
select znieyu.Id ,znieyu.FatherId,znieyu.lv1 as lv from znieyu
实现的效果:
满足条件67ID为6的递归-->6-->2(LV0)-->1(LV-1)-->0(LV-2)
满足条件67ID为8的递归-->8-->5(LV0)-->2(LV-1)-->1(LV-2)-->0(LV-3)
很简单的一个SQL递归,记录下来...
相关推荐
-
SQL Server SQL高级查询语句小结
Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from student; --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student; --top
-
基于mysql查询语句的使用详解
1> 查询数据表除了前三条以外的数据. 起初我想到的是这条语句 SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ORDER BY userid LIMIT 3) ORDER BY userid DESC 但是运行的时候会报 This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery 这个的意思是表示子查询的时候不支持l
-
基于SQL中的数据查询语句汇总
where条件表达式--统计函数 复制代码 代码如下: Select count(1) from student; --like模糊查询--统计班上姓张的人数 复制代码 代码如下: select count(*) from student where realName like '张%'; --统计班上张姓两个字的人数 复制代码 代码如下: select count(*) from student where realName like '张_'; --统计班上杭州籍的学生人数 复制代码 代码如
-
防SQL注入 生成参数化的通用分页查询语句
使用这种通用的存储过程进行分页查询,想要防SQL注入,只能对输入的参数进行过滤,例如将一个单引号"'"转换成两个单引号"''",但这种做法是不安全的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效防SQL注入,只有参数化查询才是最终的解决方案.但问题就出在这种通用分页存储过程是在存储过程内部进行SQL语句拼接,根本无法修改为参数化的查询语句,因此这种通用分页存储过程是不可取的.但是如果不用通用的分页存储过程,则意味着必须为每个具体的分页查询写一个分页存储过程
-
SQl 跨服务器查询语句
select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 insert 本地库名..表名 select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 或使用联结服务器: --创建linkServer exec sp_addlinked
-
关于SQL Server查询语句的使用
一.查询第二个字母是t或者a的雇员的全部信息 复制代码 代码如下: select * from employees where firstname like '_[t,a]%' 注意:在sql中%表示字符串,所以不可像matlab一样用其注释,两个双斜线好像也不行,/**/可以,有网友说sql单行注释为-- 二.更改字段名 复制代码 代码如下: select '名字' = firstname ,'姓氏' = lastname from employees where firstname lik
-
SQL查询语句通配符与ACCESS模糊查询like的解决方法
ACCESS的通配符和SQL SERVER的通配符比较===================================================ACCESS库的通配符为:* 与任何个数的字符匹配? 与任何单个字母的字符匹配 SQL Server中的通配符为:% 与任何个数的字符匹配_ 与单个字符匹配正文我今天在写个页面的时候,也很郁闷,表中明明有记录,但在ASP里就是搜索不到,理论的sql语句如下:Select * FROM t_food Where t_food.name
-
SQL查询语句精华使用简要第1/2页
一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和Where子句.它们分别说明所查询列.查询的 表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段. Select nickname,email FROM testtable Where name='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表.星号.表达式.变量(包括局部变 量和全局变
-
T-SQL 查询语句的执行顺序解析
(5)SELECT (5-2) DISTINCT(5-3)TOP(<top_specification>)(5-1) <select_list> (1)FROM (1-J) <left_table> <join_type> JOIN <right_table> on <on_predicate> (2)WHERE <where_predicate> (3)GROUP BY <group_by_specificatio
-
SQL 查询语句积累
2006-10-8表数据:tab1id name numA a 9A b 11B f 7B g 8所要结果:A b 11B g 8SQL 语句select * from tab1where (num in (select max(num) from tabl group by id) )解释说明,之所以要用子查询,目的是要取全部
随机推荐
- JavaScript常用全局属性与方法记录积累
- vbs 注册表操作类代码
- oracle 树查询 语句
- js对数组中的数字从小到大排序实现代码
- javascript显示上周、上个月日期的处理方法
- Symfony2实现从数据库获取数据的方法小结
- Node.js中的事件驱动编程详解
- 详谈mysqldump数据导出的问题
- PHP实现的回溯算法示例
- JavaScript屏蔽指定区域内右键菜单
- Android 为ListView添加分段标头的方法
- 新推出的金融版eXtremeDB 6.0功能改进预览
- javascript forEach通用循环遍历方法
- php入门学习知识点三 PHP上传
- Android仿QQ长按删除弹出框功能示例
- Oracle查询当前的crs/has自启动状态实例教程
- Swift利用Decodable解析JSON的一个小问题详解
- Java注解处理器简单实例
- spring boot task实现动态创建定时任务的方法
- Spring boot 集成 Druid 数据源过程详解