ex(columnAとcolumnB)という2つの特定のカラム名を持つテーブルをsqlサーバのテーブルから検索したいとします。 1つの列名を検索するクエリがあります指定された2つのカラム名を持つSQL Serverテーブルを見つけよう
SELECT name FROM sysobjects WHERE id IN
(SELECT id FROM syscolumns WHERE name = 'columnA')
これを変更して2つの列を検索する方法はわかりません。
ex(columnAとcolumnB)という2つの特定のカラム名を持つテーブルをsqlサーバのテーブルから検索したいとします。 1つの列名を検索するクエリがあります指定された2つのカラム名を持つSQL Serverテーブルを見つけよう
SELECT name FROM sysobjects WHERE id IN
(SELECT id FROM syscolumns WHERE name = 'columnA')
これを変更して2つの列を検索する方法はわかりません。
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'について話しています。) –
:
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テーブルだと確認することが重要です
あなたは不稼働回答を選択しました。 – JotaBe
あなたが正しいです...私は選択を変更しました –