select a.name as 表名,b.name as 列名 from sysobjects a left join syscolumns b on (a.id=b.id) where b.name='cInvCode' and exists (select top 1 * from a.name)如上查询代码,从系统表中查询所有包含列(cInvCode)的有记录的表,现在这条语句的错误是:
对象名 'a.name' 无效。不知怎样能达到这种目的,

解决方案 »

  1.   


    select a.name as 表名,b.name as 列名 
    from sysobjects a left join syscolumns b 
    on (a.id=b.id) 
    where b.name='cInvCode' and exists (select top 1 * from a.name)
    代码再提交一遍,哪位大侠能教教,谢谢了
      

  2.   

    EXEC [sys].[sp_MSforeachtable] 'if(select count(*) from ?)>0 print ''?'''
      

  3.   


    我也知道我贴的代码执行不了,但是我就是想达到这种目的,找到有记录的表
    sp_MSforeachtable,这个存储过程貌似没用过,试试
      

  4.   

    SELECT a.name FROM sys.sysobjects AS a
    WHERE EXISTS(SELECT 1 FROM sys.sysindexes AS x
    WHERE x.id=a.id
    AND x.rows>0
    )
    AND a.type='U'
      

  5.   

    含 cInvCode 列的表名:
    SELECT 
    a.name AS [表名]
    ,b.name AS [列名] 
    FROM sys.sysobjects AS a
    INNER JOIN sys.syscolumns AS b ON a.id=b.id
    WHERE EXISTS(SELECT 1 FROM sys.sysindexes AS x
    WHERE x.id=a.id
    AND x.rows>0
    )
    AND a.type='U'
    AND b.name='cInvCode'
      

  6.   

    正解,Thanks 
    查询前提是表中包含某一列名。