2017-03-09 5 views
0

たとえば、TableA & TableBに参加する必要がある場合、どうすればINFORMATION_SCHEMAデータベースを使用してそれらの間の共通フィールドを見つけることができますか?INFORMATION_SCHEMAを使用して2つのテーブル間の共通フィールドを見つける方法は?

select column_name 
from information_schema.columns c 
where table_name in ('A', 'B') 
group by column_name 
having count(*) = 2; 

必要であれば、あなたもテーブルを識別するためにtable_schemaを含める必要があります。

答えて

6

は、ここに1つの方法です。

+0

あなたが「TABLE_SCHEMA含む」によって何を意味するか説明できますか? – vnguyen

+0

同じデータベース内の複数のテーブルは同じ名前を持つことができ、その中にあるスキーマによってのみ区別されます。 –

+0

クエリは機能しますが、結合したい2つのテーブルで共有されているカラム名のみを表示します。言って、私はORDR&OPORに参加したい。私は次のようなクエリを作成します - > select ordr.doctotal、opor.docnum from ordr join opor on ordr.primarykey = opor.foreignkey。 ORDRの主キーがDocEntryであることを既に知っている場合、2つのテーブルをリンクするための一致するOPORの外部キーを見つけるにはどうすればよいですか? – vnguyen

0

2つのテーブルに共通のフィールドを取得する別の方法は、次の2つのテーブルに共通の列を取得するための

SELECT C.name 
FROM SYS.OBJECTS O 
JOIN SYS.COLUMNS C 
ON  O.object_id = C.object_id 
WHERE O.name IN 
(
'TABLE-A', 'TABLE-B' 
) 
group by C.name 
having count(*) = 2; 
0

ウェイ:

SELECT A.COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS A 
JOIN INFORMATION_SCHEMA.COLUMNS B ON A.COLUMN_NAME = B.COLUMN_NAME 
WHERE A.TABLE_NAME 'Table_1' 
AND B.TABLE_NAME = 'Table_2' 
関連する問題