查找具有两个指定列名的SQL Server表

时间:2012-03-23 20:01:56

标签: sql-server tsql

我想在sql server中搜索具有两个特定列名ex(columnA和columnB)的表。我有一个搜索一个列名称的查询

SELECT name FROM sysobjects WHERE id IN 
( SELECT id FROM syscolumns WHERE name = 'columnA' )

我不知道如何修改它来搜索两列。

3 个答案:

答案 0 :(得分:11)

SELECT name FROM sysobjects WHERE id IN 
( SELECT id FROM syscolumns WHERE name = 'columnA' )
and id in 
( SELECT id FROM syscolumns WHERE name = 'columnB' )

应该这样做。

答案 1 :(得分:4)

这是正确的方法:

select so.name 
from sysobjects so 
where so.type = 'U' -- it's a user's table
and exists (select * from syscolumns sc where sc.id = so.id and sc.name='columnA')
and exists (select * from syscolumns sc where sc.id = so.id and sc.name='columnB')

检查它是否是用户表非常重要。相反,你可以找到视图,表值函数等。

答案 2 :(得分:1)

尝试类似:

select syscolumns.id, sysobjects.name from syscolumns 
  join sysobjects so on sysobjects.id = syscolumns.id
 where exists (select 1 from syscolumns sc where sc.id = syscolumns.id and name = 'columnA') 
   and exists (select 1 from syscolumns sc2 where sc2.id = syscolumns.id and name = 'columnB')