2012-03-23 12 views
1

ex(columnAとcolumnB)という2つの特定のカラム名を持つテーブルをsqlサーバのテーブルから検索したいとします。 1つの列名を検索するクエリがあります指定された2つのカラム名を持つSQL Serverテーブルを見つけよう

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

これを変更して2つの列を検索する方法はわかりません。

+0

あなたは不稼働回答を選択しました。 – JotaBe

+0

あなたが正しいです...私は選択を変更しました –

答えて

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

このトリックを行う必要があります。これはそれを行うための正しい方法である

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

のようなものを試してみてください。逆に、ビュー、テーブル値関数などを見つけることができます。

+0

別のエイリアスを割り当てた場合、元の名前でテーブルを参照できないと思います。 (私は 'sysobjects'について話しています。) –

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

それはそれはuserテーブルだと確認することが重要です

関連する問題