2015-06-02 3 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:« Apple » – thevoipman

+0

Это не ошибки, а предупреждения. – Akhil

+0

@thevoipman Отредактировал ответ с другим aproach – Akhil

Смежные вопросы