2012-07-24 10 views
6

Ho la seguente query:Come limitare interrogazione SHOW TABLES

SHOW TABLES LIKE '$prefix%' 

Funziona esattamente come voglio che, anche se ho bisogno di paginazione dei risultati. Ho provato:

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

Ho bisogno di restituire tutte le tabelle con un certo prefisso e ordinarle dal loro commento. Voglio avere la paginazione tramite il LIMIT con 6 risultati per pagina.

Sto chiaramente facendo qualcosa di molto sbagliato. Come può essere realizzato?

EDIT: Ho dato un'occhiata a this. Non ha funzionato per me.

+0

Prova http://stackoverflow.com/questions/9782948/how-to-apply-pagination-to-the -result-of-show-tables-query-in-php/16807952 # 16807952 – Muk

risposta

8

Quanto sopra non può essere eseguito direttamente tramite MySQL Syntax. MySQL non supporta la clausola LIMIT su alcune affermazioni SHOW. Questo è uno di loro. MySQL Reference Doc.

Quanto segue funzionerà se l'utente MySQL ha accesso al database 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; 
+0

Ma come faccio a filtrare se per prefisso. La clausola LIKE non funziona. – Jaxkr

+2

'SELEZIONARE TABLE_NAME DA INFORMATION_SCHEMA.TABLES DOVE TABLE_SCHEMA LIKE 'table%' LIMIT 0,5' funziona –

+0

Grazie. Ma questo sta restituendo i risultati da database che iniziano con quel prefisso. Non tavoli che fanno. – Jaxkr

1

Basta selezionare tramite una query standard invece di utilizzare SHOW TABLES. Per esempio

select table_name from information_schema.tables 

Quindi è possibile utilizzare le cose come ASC e LIMIT, ecc ...