Как ограничить запрос SHOW TABLES

У меня есть следующий запрос:

SHOW TABLES LIKE '$prefix%'

Он работает именно так, как я хочу, хотя мне нужно разбивать результаты на страницы. Я старался:

SHOW TABLES LIKE '$prefix%' ORDER BY Comment ASC LIMIT 0, 6

Мне нужно, чтобы вернуть все таблицы с определенным префиксом и упорядочить их по их комментарию. Я хочу иметь разбиение на страницы через LIMIT с 6 результатами на страницу.

Я явно делаю что-то очень неправильно. Как это можно сделать?

РЕДАКТИРОВАТЬ: я просмотрел это. Это не сработало для меня.


person Jaxkr    schedule 24.07.2012    source источник
comment
Попробуйте stackoverflow.com/questions/9782948/   -  person Mukesh    schedule 29.05.2013


Ответы (2)


Вышеупомянутое нельзя сделать через синтаксис MySQL напрямую. MySQL не поддерживает предложение LIMIT в некоторых операторах SHOW. Это одна из них. Справочник по MySQL

Приведенное ниже будет работать, если ваш пользователь MySQL имеет доступ к базе данных INFORMATION_SCHEMA.

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'DATABASE_TO SEARCH_HERE' AND TABLE_NAME LIKE "table_here%"  LIMIT 0,5;
person Mike Mackintosh    schedule 24.07.2012
comment
Но как мне тогда фильтровать по префиксу. Предложение LIKE не работает. - person Jaxkr; 24.07.2012
comment
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'table%' LIMIT 0,5 работает - person Mike Mackintosh; 24.07.2012
comment
Спасибо вам. Но это возвращает результаты из баз данных, которые начинаются с этого префикса. Не таблицы, которые делают. - person Jaxkr; 24.07.2012
comment
Я извиняюсь. Попробуйте это: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'DATABASE_HERE' AND TABLE_NAME LIKE "table_here%" LIMIT 0,5; - person Mike Mackintosh; 24.07.2012

Просто выберите через стандартный запрос вместо использования SHOW TABLES. Например

select table_name from information_schema.tables

Затем вы можете использовать такие вещи, как ASC и LIMIT и т. д.

person Jer In Chicago    schedule 24.07.2012