试过“中控考试无响应”吗

2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2014年8月 其他数据库开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。SQL怎么遍历所有表的一个字段来查询数据 - Sql Server当前位置:& &&&SQL怎么遍历所有表的一个字段来查询数据SQL怎么遍历所有表的一个字段来查询数据&&网友分享于:&&浏览:213次SQL如何遍历所有表的一个字段来查询数据如题。就是说如果数据库每天产生一张表,比如Table_120201,Table_120202,Table_120203,Table_120204,Table_120205......还有一个小区名cellname字段,这个字段存在于每一张表,就是说每一张表都有这个小区的记录。现在举例要查询【一段时间内】小区名为‘Acell’的,从到的记录,怎么遍历这些表【从Table_120201--Table_120207】呢。在线等,谢谢。------解决方案--------------------将所有表联合建立视图,然后在视图里查找。你这些表若是数据大可以用分区来提高速度,若是数据小可以按月、按年建表。
------解决方案--------------------表名称有规律,可以动态去拼接SQL的查询语句,具体需要查找什么。
------解决方案--------------------& 系统每天自动创建一张表。所以视图还不好建立,因为每天的表是即时产生的。那系统不是也可以每天在建表之后更新你的视图吗?
------解决方案--------------------
--根据查询的列创建一个临时表
create table table_111201(id int)
insert into table_111201 select 1
create table table_111202(id int)
insert into table_111201 select 2
create table #temp(id int)
-- 具体的字段
declare @start datetime
declare @end datetime
declare @sql varchar(8000)
set @start = ''
set @end = ''
select @sql = isnull(@sql+' union all ','')+'select * from table_'+date
select right(convert(varchar(8),dateadd(dd,number,@start),112),6) date
from master..spt_values
where [type] = 'p' and number between 0 and datediff(dd,@start,@end)
insert into #temp exec(@sql)
select * from #temp
--select 其他查询,根据#temp临时表
drop table #temp,table_111201,table_111202
/***************
-----------
(2 行受影响)
------解决方案--------------------
探讨系统每天自动创建一张表。所以视图还不好建立,因为每天的表是即时产生的。
------解决方案--------------------
declare @dt1 datetime,@dt2 datetime
declare @cellname varchar(10)
declare @sql nvarchar(max)
--设置起止日期
set @dt1=''
set @dt2=''
--设置小区名
set @cellname='Acell'
--形成动态查询语句
select @sql=isnull(@sql+' union all ','')
+'select * from Table_'
+right(convert(varchar(8),dateadd(d,number,@dt1),112),6)
+' where +''''
from master..spt_values
where type='p' and dateadd(d,number,@dt1)&
--执行动态查询语句
exec(@sql)
如果将上面这句改成 select @sql,则你会得到这样的字串(复制网格中的内容):
select * from Table_120201 where cellname='Acell' union all select * from Table_120202 where cellname='Acell' union all select * from Table_120203 where cellname='Acell' union all select * from Table_120204 where cellname='Acell' union all select * from Table_120205 where cellname='Acell' union all select * from Table_120206 where cellname='Acell' union all select * from Table_120207 where cellname='Acell'
这就是你要的遍历各表的查询语句
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有SQL Server中如何实现遍历表的记录
用圣才电子书APP或微信扫一扫,在手机上阅读本文,也可分享给你的朋友。
SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录。
但游标在实际的开发中都不推荐使用。
我们知道还可以借助临时表或表变量等来实现SQL Server遍历表
下例为用表变量来实现简单的循环:
(直接复制到查询分析器中运行即可)
1.declare&@temp&table& &
3.&&&[id]&int&IDENTITY(1,1),& &
4.&&&[Name]&varchar(10)& &
6.declare&@tempId&int,@tempName&varchar(10)& &
8.insert&into&@temp&values('a')& &
9.insert&into&@temp&values('b')& &
10.insert&into&@temp&values('c')& &
11.insert&into&@temp&values('d')& &
12.insert&into&@temp&values('e')& &
14.--select&*&from&@temp& &
16.WHILE&EXISTS(select&[id]&from&@temp)& &
17.begin& &
18.SET&ROWCOUNT&1&& &
19.select&@tempId&=&[id],@tempName=[Name]&from&@temp& &
20.SET&ROWCOUNT&0& &
21.delete&from&@temp&where&[id]&=&@tempId& &
23.print&'Name:----'+@tempName& &
来源:网络
小编工资已与此赏挂钩!一赏一分钱!求打赏↓ ↓ ↓
如果你喜欢本文章,请赐赏:
已赐赏的人
我的电子书

我要回帖

更多关于 中控室考试题 的文章

 

随机推荐