2012-10-25 22 views
0

我需要獲取與其基表關聯的所有備份表。例如,table_name產生table_name_backup1, table_name_backup2 ..等等。這樣做的原因是因爲我不想手動獲取備份表名稱,可能有幾十個,它們是根據遊戲周和日期命名的,因此無法預測它們的名稱。從數據庫排序獲取的表名。 Mysql PHP

結果在執行該語句,如果$ TBL = '' 的排名例如後我得到:

...

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中,因此,當我分支時顯示錯誤的數據順序明白他們的價值。

我一直在想做一個函數,它會提取gwx中的數字並重新排序整個事情,但我認爲必須有一個更簡單的方法。

那麼,我怎麼能以正確的順序顯示這些表?

BTW,當我在MYSQLYOG查看我的數據庫,它們出現在完全相同的順序,而在我的phpmyadmin他們以正確的順序顯示,gw11顯示最後一個。 還有就是具有相同GWX值,例如ranking_gw0_080812和ranking_gw0_101012

回答

1

你應該這樣做:

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

由於您只需要與創建時排序的特定模式相匹配的表格。

+0

你的意思是這樣寫: 選擇 table_name的 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '' 的排名和 表名LIKE '%ranking_gw' ORDER BY CREATE_TIME; – MJoraid

+0

@MohammedJoraid是的,因爲你需要根據它們的創建方式對它們進行排序。 – dan

+0

哈哈我犯了一個錯誤,我把表名稱,而不是dbName,難怪我得到一個空的結果。 現在它作爲魅力。非常感謝。 +1根據我的問題來定製查詢。 – MJoraid

0

你可以嘗試不同的方法,即排序是可能的兩個表的可能性:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema='your_database_name' 
ORDER BY table_name ASC; 
相關問題