2012-07-24 15 views
6

Ich habe die folgende Abfrage begrenzen:Wie SHOW TABLES Abfrage

SHOW TABLES LIKE '$prefix%' 

Es genau funktioniert, wie ich will es, obwohl ich Paginierung der Ergebnisse benötigen. Ich habe versucht:

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

Ich brauche es, um alle Tabellen mit einem bestimmten Präfix zurückzugeben und sie nach ihrem Kommentar zu ordnen. Ich möchte Paginierung über das LIMIT mit 6 Ergebnissen pro Seite haben.

Ich mache eindeutig etwas sehr falsch. Wie kann dies erreicht werden?

EDIT: Ich habe mir this angesehen. Es hat nicht für mich funktioniert.

+0

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

Antwort

8

Das obige kann nicht direkt über MySQL Syntax getan werden. MySQL unterstützt die LIMIT-Klausel für bestimmte SHOW-Anweisungen nicht. Dies ist einer von ihnen. MySQL Reference Doc.

Das Folgende funktioniert, wenn Ihr MySQL-Benutzer Zugriff auf die Datenbank INFORMATION_SCHEMA hat.

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'DATABASE_TO SEARCH_HERE' AND TABLE_NAME LIKE "table_here%" LIMIT 0,5; 
+0

Aber wie filtere ich dann wenn durch Präfix. Die LIKE-Klausel funktioniert nicht. – Jaxkr

+2

'SELECT TABLE_NAME AUS INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'Tabelle%' LIMIT 0,5' funktioniert –

+0

Vielen Dank. Aber das liefert Ergebnisse von Datenbanken, die mit diesem Präfix beginnen. Nicht Tische, die es tun. – Jaxkr

1

Wählen Sie einfach über eine Standardabfrage anstelle von SHOW TABLES. Zum Beispiel

select table_name from information_schema.tables 

Dann Sie Dinge wie ASC und LIMIT usw. verwenden können ...