3

some_database次のような複数のテーブルを持つデータベースがある場合:

table_one
table_two
table_three

どこ

table_oneもっているCPV_one

table_twoもっているCPV_two

table_threeもっているCPV_three

次のような列を持つすべてのテーブルを見つける必要があります'%CPV%'

これはSQLクエリで実行できますか? すべてのテーブルを1つずつチェックすることは避けたいです。

4

4 に答える 4

9

クエリを実行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%'
于 2012-10-03T14:09:44.137 に答える
0

ここに、必要な条件でテーブル名を取得するコードがあります。

SELECT DISTINCT TABLE_NAME
  FROM information_schema.Columns
 WHERE COLUMN_NAME LIKE '%CPV%';

テイクの詳細については、こちらをご覧くださいINFORMATION SCHEMA

そしてテーブルはこちらCOLUMNS

于 2012-10-03T14:09:43.757 に答える
0
    SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME LIKE '%CPV%'
        AND TABLE_SCHEMA='YourDatabase';
于 2012-10-03T14:10:07.033 に答える
0

MySQL の information_schema にクエリを実行するのはどうですか?

SELECT TABLE_NAME
  FROM information_schema.COLUMNS
 WHERE COLUMN_NAME LIKE '%CPV%'
于 2012-10-03T14:11:48.623 に答える