当前位置: 代码迷 >> Sql Server >> SQL2008查询有关问题
  详细解决方案

SQL2008查询有关问题

热度:60   发布时间:2016-04-24 21:14:54.0
SQL2008查询问题
我要从sysobjects里面查找所有的以Y开头的表名(用户表),然后在这些表里面查找数据,要怎么写过程?

需要的是类似下面的结果(这个肯定是不行的):
select * from (select name from sysobjects where type='U' and name like 'Y%') where barcode='1234'

------解决方案--------------------
先找出表名,再根据表去找数据
------解决方案--------------------

declare @tb nvarchar(50),@sql nvarchar(2000)
select @tb=name from sysobjects where type='U' and name like 'Y%'
set @sql='select * from '+@tb+' where barcode=''1234'' '
exec(@sql)

如果你有一个以上y开头的表,需要写游标一个表一个表的查询
------解决方案--------------------
搜一下 foreachtable
------解决方案--------------------
引用:

declare @tb nvarchar(50),@sql nvarchar(2000)
select @tb=name from sysobjects where type='U' and name like 'Y%'
set @sql='select * from '+@tb+' where barcode=''1234'' '
exec(@sql)

如果你有一个以上y开头的表,需要写游标一个表一个表的查询

把@tb改成table类型 然后判断遍历这个@tb也可以。
------解决方案--------------------

不明白你这样写有什么意思,如果返回的是两个表呢。

declare @sql varchar(max)
set @sql = ''
select  @sql = @sql+ ' select * from  '+ t.name +'where barcode=''1234''   '
from sysobjects  as t join sys.all_columns as c on t.id = c.object_id and t.type='U' and c.name ='barcode'  and t.name like 'Y%'
exec (@sql)

引用:
我要从sysobjects里面查找所有的以Y开头的表名(用户表),然后在这些表里面查找数据,要怎么写过程?

需要的是类似下面的结果(这个肯定是不行的):
select * from (select name from sysobjects where type='U' and name like 'Y%') where barcode='1234'

------解决方案--------------------
  相关解决方案