我想在sql server中搜索具有两个特定列名ex(columnA和columnB)的表。我有一个搜索一个列名称的查询
SELECT name FROM sysobjects WHERE id IN
( SELECT id FROM syscolumns WHERE name = 'columnA' )
我不知道如何修改它来搜索两列。
答案 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')