0

ベース テーブルに関連付けられているすべてのバックアップ テーブルを取得する必要があります。たとえば、table_name利回りtable_name_backup1, table_name_backup2などです。これを行う理由は、バックアップ テーブル名を手動で取得したくないためです。数十のテーブルが存在する可能性があり、ゲームの週と日付に基づいて名前が付けられているため、名前を予測できません。

たとえば、 $tbl = 'ranking' の場合、このステートメントを実行した後に得られる結果:

...

function getTables($tbl){
  $query = "SHOW TABLES LIKE '" . $tbl . "_gw%' ORDER BY ";

結果

 [0] => ranking_gw0_231012
    [1] => ranking_gw10_231012
    [2] => ranking_gw11_231012
    [3] => ranking_gw1_231012
    [4] => ranking_gw2_231012
    [5] => ranking_gw3_231012
    [6] => ranking_gw4_231012
    [7] => ranking_gw5_231012
    [8] => ranking_gw6_231012
    [9] => ranking_gw7_231012
    [10] => ranking_gw8_231012
    [11] => ranking_gw9_231012
    [12] => ranking       // I insert this manually before return statement. 

テーブルgw10はインデックス 1 に表示され、値を送信すると間違ったデータ順序が表示されるため、バックアップが 9 つを超えるテーブルの順序が正しくないことを除いて、すべて問題ありません。

gwxの数値を抽出して全体を再ソートする関数を作成することを考えていましたが、もっと簡単な方法があるに違いないと思います。

では、これらのテーブルを正しい順序で表示するにはどうすればよいでしょうか?

ところで、MYSQLYOG でデータベースを表示すると、まったく同じ順序で表示されますが、phpmyadmin では正しい順序で表示され、gw11が最後の順序で表示されます。同じ gwx 値を持つ 2 つのテーブルを持つ可能性があります。

4

2 に答える 2

1

次のようにする必要があります。

select table_name from information_schema.tables 
  where table_schema="yourDbName" and table_name like '" . $tbl . "_gw%' 
  order by create_time;

特定のパターンに一致するテーブルのみが必要なため、作成時に並べ替えます。

于 2012-10-25T09:08:14.283 に答える
0

注文が可能な場合は、別のアプローチを試すことができます。

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema='your_database_name'  
ORDER BY table_name ASC;
于 2012-10-25T08:45:35.180 に答える