2016-09-12 4 views
1

データベース内のすべてのテーブルのテーブル名を返すために、1つのクエリを作成しようとしています。このテーブルには、3つの列名:gps time, shape, idがあります。 答えを探していましたが、すべてが1つの列名に対してのみ機能します。すべてのテーブルで複数の列名を検索してテーブル名を返す

SELECT table_name 
FROM information_schema.COLUMNS 
WHERE 
TABLE_SCHEMA = 'db_name' 
AND COLUMN_NAME = 'column_name' 

私は別の"AND COLUMN_NAME = 'column_name2'"を追加すると、それは0

は、任意の助けを事前にありがとうござい返します。

答えて

1
SELECT table_name 
FROM information_schema.COLUMNS 
WHERE 
TABLE_SCHEMA = 'db_name' 
AND COLUMN_NAME IN ('column_name', 'column_name2', 'column_name3') 
GROUP BY table_name 
HAVING COUNT(*) = 3 
+0

これは素晴らしいです:)ありがとう、親切な男! – Marox

+0

コレクションを分離し、複数の "AND"ステートメントを作成することは可能ですか? – Marox

+0

いいえ、 'information_schema.COLUMNS'は' table_nameのようなデータを格納するため、column_nameは3列の3行を意味します。そのため、最後に行をマージするために 'group by 'を使用しました。これは 'select table_name、COLUMN_NAME from information_schema.COLUMNS'でチェックすることができます。 – Shaharyar