2016-04-08 16 views
0

おはよう!MySQLを手に入れよう:info_scheme

だから、私はMySQLを手にしていて、障害に遭遇しました。コードは次のとおりです。

SELECT table_name, table_rows, data_length, update_time FROM information_schema.tables 
WHERE table_name IN 
('table_1' , 'table_2' , 'table_3' , 'table_4') 

私がしようとしているのは、information_schemeでテーブルの状態を確認することです。上記のコードのテーブルが存在しなくなるまで、うまくいきます。

+------------------+------------+-------------+---------------------+ 
| table_name  | table_rows | data_length | update_time   | 
+------------------+------------+-------------+---------------------+ 
| table_1   | 7041979 | 5497161940 | 2016-04-07 02:53:41 | 
| table_3   |  NULL |  NULL |    NULL | 

と私はそれを行うための方法を見つけることができません: 目標は、次のようになります。その結果を取得することです。それについての情報のトンを読んで、それでも私の頭を包むことはできません。これはシンプルでエレガントに解決されるべきだと感じていますが、どうですか?

ありがとうございます。

答えて

1

使用left join代わりに:table_2を ' '...を選択して'

SELECT tn.table_name, t.table_rows, t.data_length, t.update_time 
FROM (SELECT 'table_1' as table_name UNION ALL 
     SELECT 'table_2' as table_name UNION ALL 
     SELECT 'table_3' as table_name UNION ALL 
     SELECT 'table_4' as table_name 
    ) tn LEFT JOIN 
    information_schema.tables t 
    ON tn.table_name = t.table_name; 
+0

はそれが可能です** のような**巨大な工事なしでのtable_1を「選択'? 私はprocに保存されますか? とにかく良い解決策ですが、( 'a'、 'b'、 'c'、 'foo'、 'bar'、 'etc'のような)テーブルリストを使いたいです。 Thanx – Arris

+0

@Arris。 。 。おそらく、すでに関連する名前を別のテーブルに保存しておき、それをソースとして使用することができます。 –

+0

番号。あなたの回答に基づいて、私は関数を書いた: https://gist.github.com/KarelWintersky/90f1a2a0d3340cf4ba3b5e106afac589 – Arris

関連する問題