2012-03-23 68 views
1

我想在sql server中搜索具有兩個特定列名ex(columnA和columnB)的表。我有一個查詢,在一列名搜索查找具有兩個指定列名的SQL Server表

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

我不知道如何修改此以搜索兩列。

+0

您已選擇一個非工作答案。 – JotaBe 2012-03-23 20:34:51

+0

你是對的...我已經改變了選擇 – 2012-03-23 20:59:09

回答

8
SELECT name FROM sysobjects WHERE id IN 
(SELECT id FROM syscolumns WHERE name = 'columnA') 
and id in 
(SELECT id FROM syscolumns WHERE name = 'columnB') 

應該這樣做。

1

嘗試類似:

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

我認爲你不能通過它的原始名稱來引用表,如果你爲它分配了一個不同的別名。 (我正在談論'sysobjects'。) – 2012-03-23 20:11:45

1

這是做正確的方式:

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

它來檢查,這是一個用戶表是很重要的。相反,你可以找到視圖,表值函數等等。

相關問題