2012-07-24 9 views
6

Tengo la siguiente consulta:Cómo limitar consulta Mostrar Tablas

SHOW TABLES LIKE '$prefix%' 

Funciona exactamente como yo quiero que, a pesar de que necesito la paginación de los resultados. Intenté:

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

Lo necesito para devolver todas las tablas con un cierto prefijo y ordenarlas por su comentario. Quiero tener paginación a través del LIMIT con 6 resultados por página.

claramente estoy haciendo algo muy malo. ¿Cómo se puede lograr esto?

EDITAR: miré this. No funcionó para mí.

+0

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

Respuesta

8

Lo anterior no se puede hacer a través de la sintaxis de MySQL directamente. MySQL no admite la cláusula LIMIT en ciertas declaraciones SHOW. Este es uno de ellos. MySQL Reference Doc.

Lo siguiente funcionará si su usuario de MySQL tiene acceso a la base de datos 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

Pero, ¿cómo puedo filtrar si por prefijo? La cláusula LIKE no está funcionando. – Jaxkr

+2

'SELECCIONE TABLE_NAME DE INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'table%' LIMIT 0,5' funciona –

+0

Gracias. Pero eso es devolver los resultados de las bases de datos que comienzan con ese prefijo. No hay tablas que sí. – Jaxkr

1

Simplemente seleccione mediante una consulta estándar en lugar de utilizar SHOW TABLES. Por ejemplo

select table_name from information_schema.tables 

A continuación, puede usar cosas como ASC y limitar, etc ...

Cuestiones relacionadas