web-dev-qa-db-ja.com

名前が特定のサフィックスで終わるすべてのテーブルを検索します

データベースには何千ものテーブルがあります。一部の名前は_Historyで終わります。

例えば ​​:

abc_History
bcd_History
123_History

名前が_Historyで終わるすべてのテーブルを検索するにはどうすればよいですか。

何かのようなもの:

SELECT
table_name
FROM sys.tables WHERE table_name LIKE '_History%'

そして

error : Invalid column name 'table_name'.
14
Shree

これを試して:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.tables 
WHERE TABLE_NAME LIKE '%_History'

[〜#〜]または[〜#〜]

SELECT name
FROM sys.tables
WHERE name LIKE '%_History'
25
Saharsh Shah

@ Saharsh-shahに感謝します。

同じクエリですべての列名を含むテーブル名を取得するには、これを使用します。

SELECT 
    `TABLE_NAME`,
    group_concat(`COLUMN_NAME` separator ',') AS `COLUMNS`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_NAME` IN(
    SELECT TABLE_NAME
        FROM INFORMATION_SCHEMA.tables 
        WHERE `TABLE_NAME` LIKE '%_History'
    )
GROUP BY `TABLE_NAME`

あなたはそれを多次元PHP配列で非常に簡単に次のようにしてプッシュすることができます:

$tables['columns'] = explode(',', $tables['columns']);

それがいくつかを助けることを願っています。

0
Meloman