Найти таблицы SQL Server с двумя указанными именами столбцов - PullRequest
3 голосов
/ 24 марта 2012

Я хотел бы найти в таблицах на сервере sql таблицу с двумя конкретными именами столбцов ex (columnA и columnB). У меня есть запрос, который ищет по одному имени столбца

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

Я не знаю, как изменить это для поиска двух столбцов.

Ответы [ 3 ]

11 голосов
/ 24 марта 2012
SELECT name FROM sysobjects WHERE id IN 
( SELECT id FROM syscolumns WHERE name = 'columnA' )
and id in 
( SELECT id FROM syscolumns WHERE name = 'columnB' )

должен добиться цели.

4 голосов
/ 24 марта 2012

Это правильный способ сделать это:

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')

Важно убедиться, что это пользовательская таблица.Наоборот, вы можете найти представления, табличные функции и т. Д.

1 голос
/ 24 марта 2012

Попробуйте что-то вроде:

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...