sqlserver 公共表达式小体验

创建测试数据表

CREATE TABLE [dbo].[test](
[id] [int] IDENTITY(1,1) NOT NULL,
[parent_id] [int] NULL,
[agent] [bit] NULL,
CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (1, 0, 1)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (2, 1, 0)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (3, 1, 1)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (4, 2, 0)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (5, 3, 1)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (6, 3, 0)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (7, 6, 0)
GO
INSERT [dbo].[test] ([id], [parent_id], [agent]) VALUES (8, 1, 0)
GO

通过公共表达式查找想要的数据

with test_CTE
as (
select *,10 as tlevel from test where id = 7
union all
select t.*,cte.tlevel-1 from test as t
inner join test_CTE as cte on t.id = cte.parent_id
)

select top 1 * from test_CTE
where agent=1
order by tlevel Desc

时间: 2024-11-08 19:07:42

sqlserver 公共表达式小体验的相关文章

sql server 公共表达式(CTE)的简单应用

现在做项目数据访问基本都会选择一种orm框架,它以面向对象的形式屏蔽底层的数据访问形式,让开发人员更集中在业务处理上,而不是和数据库的交互上,帮助我们提高开发效率:例如一些简单的insert.update,我们不需要写insert into...sql 语句,而是直接new一个实体对象,然后db.Insert(entity),看起来是那么清爽:像EF这样比较完善的orm,支持linq语法对数据库进行访问,写起来就更加爽了,有些人甚至认为开发人员可以不用会写sql语句了...但现实不会让你工作得那

114DNS Public DNS+ 阿里DNS 百度DNS 360 DNS派 Google DNS公共DNS评测体验报告

114DNS.腾讯dnspod DNS.阿里DNS.百度DNS.360DNS.Google DNS公共DNS评测体验报告从ping及dig返回时间对比测试,国内DNS普遍很快,而阿里DNS最快,次之腾讯dnspod DNS,然后114DNS,百度及360DNS派中规中矩,而Google DNS还是很慢(由于众所周知的原因,你懂的)我们还是拥抱国产DNS吧,推荐腾讯DNSPOD DNS 119.29.29.29 阿里DNS 223.6.6.6和223.5.5.5 来看看各家DNS的介绍: 114

关于产品运营小体验

背景:又到一年苹果采摘季节,每周还是打电话给家里问一下:今年苹果怎么样,收成如何,卖的价格如何?这些问题几乎每年都会重复很多次.父母反馈,今年收成受到天气影响(貌似中国气候一年比一年反常),苹果个头小,价格比较低,加上去年很多水果贩冷库存储量太大没有销售完,新一季苹果出来前他们在大幅度降价亏本再卖去年冷库水果.我自己几乎每周也去水果市场买水果,也的确发现,6-7月份一些红富士2.5-4元之间,这个相对于去年的价格差的太多了.自己做IT行业,整天被互联网的信息冲击着,有同学开淘宝卖水果,有同学开微

python列表生成式和生成器表达式小程序

列表表达式 程序一: 常规写法: egg_list=[] for i in range(100): egg_list.append('egg%s' %i) print(egg_list) 列表表达式写法: l=['egg%s' %i for i in range(100) if i > 0] print(l) 程序二: 常规写法: l=[1,2,3,4] s='hello' l1=[] for num in l: for s1 in s: t=(num,s1) l1.append(t) prin

Python中的Lambda表达式小析

Lambda表达式在Python中经常使用到,在此总结下Lambda表达式的常用方法. 首先,要明白Lambda表达在Python中是作为一个匿名函数的构造器而存在.其次,要明白Lambda表达式的常用场景是Lambda表达式对应函数的使用次数非常有限(因此,没有必要专门定义一个非匿名函数),同时保证了代码的简洁性. 最简单的一个Lambda表达式例子和对应的非匿名函数: f = lambda x: x + 1 print ( f(1) ) def h (x): return x + 1 pri

例题11-1 公共表达式消除 UVa12219

1.题目描述:点击打开链接 2.解题思路:第一步是构造表达式树,构造时可以利用一个map来记录出现的子树,并为之编号.例如,用(a,0,0)可以表示一个叶子a,用(b,3,6)表示根的名字是b,子树的编号分别是3,6的树.这样既可方便地得到最简表达式.本题总的时间复杂度为O(N*logN). 3.代码: #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string&

Lamada表达式小技巧介绍

函数式编程 @FunctionalInterface interface Lf{ void dispaly(); } @FunctionalInterface为显示定义函数时编程接口,不符合函数式编程接口会报错匿名内部类使用方式 public class FunPrograming { public static void main(String[] args) { func func = new func() { @Override public void dispaly() { // TOD

Bootstrap小体验

感觉很不错,给人一种清淅 明了的感觉

uva 12219 公共表达式消除

转自:http://blog.csdn.net/xl2015190026/article/details/51927559 题目大意: 见紫书p354 基本思路: 二叉树递归,解决超时问题就用map,虽然我不会写map,这是一个问题: 这个print之所以还是用一个done来标记是因为怕越界,如果用数组就得开的非常大,而且容易越界: 代码如下: #include<stdio.h> #include<iostream> #include<map> #include<