some_database
次のような複数のテーブルを持つデータベースがある場合:
table_one
table_two
table_three
どこ
table_one
もっているCPV_one
table_two
もっているCPV_two
table_three
もっているCPV_three
次のような列を持つすべてのテーブルを見つける必要があります'%CPV%'
これはSQLクエリで実行できますか? すべてのテーブルを1つずつチェックすることは避けたいです。
クエリを実行information_schema
して、一致する列名を持つデータベース内の各テーブルのリストを取得できます。
SELECT
TABLE_NAME, COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'SOME_DATABASE'
AND COLUMN_NAME LIKE '%CPV%'
編集(TABLE_NAME
列のみを選択)
コメントで指摘されているように、(一致する列のリストなしで) テーブルの名前のみを選択する場合は、DISTINCT
キーワードも使用する必要があります。そうしないと、重複した行が返されます一致する各列の同じテーブル:
SELECT
DISTINCT TABLE_NAME
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'SOME_DATABASE'
AND COLUMN_NAME LIKE '%CPV%'
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '%CPV%'
AND TABLE_SCHEMA='YourDatabase';
MySQL の information_schema にクエリを実行するのはどうですか?
SELECT TABLE_NAME
FROM information_schema.COLUMNS
WHERE COLUMN_NAME LIKE '%CPV%'