Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 查找具有两个指定列名的SQL Server表_Sql Server_Tsql - Fatal编程技术网

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

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

我想在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 = '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
)您选择了一个不起作用的答案。您是对的……我更改了选择