我想在sql server中搜索具有兩個特定列名ex(columnA和columnB)的表。我有一個查詢,在一列名搜索查找具有兩個指定列名的SQL Server表
SELECT name FROM sysobjects WHERE id IN
(SELECT id FROM syscolumns WHERE name = 'columnA')
我不知道如何修改此以搜索兩列。
我想在sql server中搜索具有兩個特定列名ex(columnA和columnB)的表。我有一個查詢,在一列名搜索查找具有兩個指定列名的SQL Server表
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')
我認爲你不能通過它的原始名稱來引用表,如果你爲它分配了一個不同的別名。 (我正在談論'sysobjects'。) – 2012-03-23 20:11:45
這是做正確的方式:
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')
它來檢查,這是一個用戶表是很重要的。相反,你可以找到視圖,表值函數等等。
您已選擇一個非工作答案。 – JotaBe 2012-03-23 20:34:51
你是對的...我已經改變了選擇 – 2012-03-23 20:59:09