日期:2014-05-17  浏览次数:20532 次

SQL 知道数据库名字 某一字段名(列名 。。主键)以及字段名的值 查表名
比如:
数据库名字 DB;
有A,B,C,D,E,F等表,其中均包含列 COU;
现在已知 COU=000001;
求所在的表的名字
SQL?2005??MFC? SQL2005,MFC

------解决方案--------------------

DECLARE @sql VARCHAR(MAX)
SET @sql=''
;
WITH a1 AS 
(
SELECT b.name
FROM syscolumns a
INNER JOIN sysobjects b ON a.id=b.id
where UPPER(a.name)='COU' AND b.xtype='U'
)
SELECT @sql=@sql+CASE WHEN @sql='' THEN '' ELSE ' union all ' END + 'select top 1 '''+
+name+''' name from '+name+' where COU=''000001'''
FROM a1

EXEC(@sql)

------解决方案--------------------

--簡化一下:
DECLARE @sql VARCHAR(MAX)
SET @sql=''
;
SELECT @sql=@sql+CASE WHEN @sql='' THEN '' ELSE ' union all ' END + 'select top 1 '''+
+b.name+''' name from '+b.name+' where COU=''000001'''
FROM syscolumns a
INNER JOIN sysobjects b ON a.id=b.id
where UPPER(a.name)='COU' AND b.xtype='U'

EXEC(@sql)