2015-06-02 66 views
0

也许我在这里失去了一些东西。我试图随机选择一个只有数字/数字的数据库表名。这是我得到的,但是当测试运行查询时,mysql告诉我我的查询不正确。任何形式的帮助我都能得到,非常感谢!如何mysql随机选择表名

$sql = "SHOW TABLES FROM `master` WHERE TABLES is NUMERIC ORDER BY RAND() LIMIT 1"; 
$result = mysql_query($sql); 

回答

2

我不确定您是否可以使用显示表获得结果。

但是,你绝对可以使用INFORMATION_SCHEMA来达到同样的

SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA = 'master' 
AND CAST(TABLE_NAME AS UNSIGNED) <> 0 
ORDER BY RAND() LIMIT 1; 

压制截断数据警告,使用正则表达式

SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA = 'master' 
AND TABLE_NAME REGEXP '^(-|\\+)?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$' 
ORDER BY RAND() LIMIT 1; 
+0

使用下面的查询谢谢你 - 这个伟大的工程,但我m得到一堆不是数字的表错误'截断不正确INTEGER值:'苹果' – thevoipman

+0

这些都不是错误,但警告。 – Akhil

+0

@thevoipman编辑答案与另一个aproach – Akhil