0

我需要获取与其基表关联的所有备份表。例如,table_name产量table_name_backup1, table_name_backup2..等。这样做的原因是因为我不想手动获取备份表名称,可能有几十个,它们是根据游戏周和日期命名的,因此无法预测它们的名称。

if $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. 

一切都很好,除了超过 9 个备份的表的顺序不正确,因为表gw10出现在索引 1 中,因此当我提交它们的值时显示错误的数据顺序。

我一直在考虑创建一个函数来提取gwx中的数字并重新排序整个事情,但我认为必须有一个更简单的方法。

那么,我怎样才能以正确的顺序显示这些表格呢?

顺便说一句,当我在 MYSQLYOG 中查看我的数据库时,它们以完全相同的顺序出现,而在我的 phpmyadmin 中它们以正确的顺序显示,gw11显示在最后一个。有可能有两个表具有相同的 gwx 值,例如ranking_gw0_080812 和ranking_gw0_101012

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 回答