Sql server 查找具有两个指定列名的SQL Server表
我想在sql server中搜索具有两个特定列名(例如columnA和columnB)的表。我有一个搜索一个列名的查询Sql server 查找具有两个指定列名的SQL Server表,sql-server,tsql,Sql Server,Tsql,我想在sql server中搜索具有两个特定列名(例如columnA和columnB)的表。我有一个搜索一个列名的查询 SELECT name FROM sysobjects WHERE id IN ( SELECT id FROM syscolumns WHERE name = 'columnA' ) 我不知道如何修改它来搜索两列 SELECT name FROM sysobjects WHERE id IN ( SELECT id FROM syscolumns WHERE name
SELECT name FROM sysobjects WHERE id IN
( SELECT id FROM syscolumns WHERE name = 'columnA' )
我不知道如何修改它来搜索两列
SELECT name FROM sysobjects WHERE id IN
( SELECT id FROM syscolumns WHERE name = 'columnA' )
and id in
( SELECT id FROM syscolumns WHERE name = 'columnB' )
应该能做到这一点。试试以下方法:
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')
这是正确的方法:
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')
检查它是否是用户表很重要。相反,您可以找到视图、表值函数等等。我认为,如果您为表指定了不同的别名,则无法按其原始名称引用该表。(我说的是
sysobjects
)您选择了一个不起作用的答案。您是对的……我更改了选择