我需要获取与其基表关联的所有备份表。
例如,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.
除了订单对于备份超过9个的表不正确外,一切正常,因为表 gw10 出现在索引1中,因此,当我提交其值时,显示错误的数据顺序。
我一直在考虑制作一个能够提取 gwx 中的数字并对整个事物进行排序的函数,但我认为必须有一种更简单的方法。
那么,我怎么能以正确的顺序显示这些表格呢?
BTW,当我在MYSQLYOG中查看我的数据库时,它们以相同的顺序显示,而在我的phpmyadmin中,它们以正确的顺序显示, gw11 显示在最后一个。 有两个具有相同gwx值的表,例如ranking_gw0_080812和ranking_gw0_101012
答案 0 :(得分:1)
您应该执行以下操作:
select table_name from information_schema.tables
where table_schema="yourDbName" and table_name like '" . $tbl . "_gw%'
order by create_time;
由于您只需要与特定模式匹配的表,因此按创建时间排序。
答案 1 :(得分:0)
您可以尝试一种可以订购的不同方法:
SELECT table_name
FROM information_schema.tables
WHERE table_schema='your_database_name'
ORDER BY table_name ASC;