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

Ron*_*ald 3 t-sql sql-server

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

SELECT name FROM sysobjects WHERE id IN 
( SELECT id FROM syscolumns WHERE name = 'columnA' )
Run Code Online (Sandbox Code Playgroud)

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

Fra*_*itt 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' )
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.


Jot*_*aBe 5

这是正确的方法:

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')
Run Code Online (Sandbox Code Playgroud)

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