SQL SERVER 2008的查询语句问题
发布网友
发布时间:2022-05-05 07:08
我来回答
共4个回答
热心网友
时间:2022-05-05 08:37
先问一句,这1000来张表是不是名字都是以group开头的,是的话这样
先得创建一张结果表,方便你将来查数据
select id,name,sex,age,addr into result from group1 where 1<>1
然后执行这个过程
DECLARE c_cursor CURSOR FOR
Select name From sysobjects where name like 'group%' order by name
DECLARE @tablename varchar(100)
DELCARE @sql varchar(max) into @tablename
OPEN c_cursor
FETCH NEXT FROM c_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql='insert into result select id,name,sex,age,addr from ' + @tablename + ' where name='王磊''
exec (@sql)
FETCH NEXT FROM c_cursor into @tablename
END
CLOSE c_cursor
DEALLOCATE c_cursor
不过这执行过程中可能你机器会一直很卡,我直接你,查收吧,我怕有问题,你机器卡的问都问不了了
热心网友
时间:2022-05-05 09:55
写个游标循环取,加上输出表名,如果系统死机或者过慢就强制停止,下次从该表处接着查
declare @tbname varchar(200)
declare @sql nvarchar(2000)
declare cur cursor for
select a.name from sys.tables a,sys.columns b
where a.object_id=b.object_id and b.name='name' order by a.name
open cur
fetch next from cur into @tbname
while @@fetch_status=0 begin
print @tbname
set @sql='select * from '+@tbname+' where name=''王磊'''
exec(@sql)
fetch next from cur into @tbname
end
执行的时候把结果输出模式改成以文本格式显示,以免超过100个上限
或者直接把查询的结果都插入到一个表中统一查看也可
热心网友
时间:2022-05-05 11:30
create table tb1
(
id [int] IDENTITY (1, 1),
tbname varchar(100)
)
--- 把数据库的所有表名插入tb1表
insert tb1 (tbname)
select name from 数据库名称.dbo.sysobjects where xtype='u'
这样tb1表里面就有数据库名,列名。创建一个存储过程,循环搜索:
create PROCEDURE TESTPERCUDURE
AS
DECLARE @col INTEGER
DECLARE @colmax INTEGER
DECLARE @tablename varchar(100)
DECLARE @SQL AS VARCHAR(200)
BEGIN
SET @col=1
set @colmax = (select max(id) from tb1)
SET @tablename= ''
WHILE @col<=@colmax
begin
SET @tablename= (select tbname from tb1 where id = @col)
SET @SQL='select * FROM '+@tablename+' where name = '王磊' ---通过循环获取你的表名之后组装成SQL语句,然后执行.
EXECUTE sp_executesql @SQL
SET @col=@col+1
END
end
创建完存储过程后再执行存储过程
exec TESTPERCUDURE
你数据这么大,这个存储过程要执行很久的,好就采纳吧。
热心网友
时间:2022-05-05 13:21
用UNION连接
SELECT [ID]
,[NAME]
,[SEX]
,[Age]
,[ADDR]
FROM [Data].dbo.Group1
where NAME = '王磊'
UNION
SELECT [ID]
,[NAME]
,[SEX]
,[Age]
,[ADDR]
FROM [Data].dbo.Group1
where NAME = '王磊'追问连接1000多个表?
追答你有1000多个表那就UNION 1000多个表。
如果你觉得写语句麻烦,那你就建个表,将这1000多个表名维护进去,然后用游标循环拼接语句,输出查询语句