creo que es necesario también especificar el nombre de la base de datos:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'SchemaNameHere'
AND table_name = 'TableNameHere'
si no se especifica el nombre de su base de datos, es probable que contará todas las columnas, siempre y cuando coincide con el nombre de tu mesa. Por ejemplo, usted tiene dos bases de datos: DBaseA and DbaseB
, En DBaseA
, que tiene dos tablas: Taba (3 campos), Tabb (4 campos). Y en DBaseB
, tiene de nuevo dos tablas: TabA (4 campos), TabC (4 campos).
si ejecuta esta consulta:
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'TabA'
se volverá 7 porque hay dos tablas denominadas TabA
. Sin embargo, al añadir otra condición table_schema = 'SchemaNameHere'
:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
AND table_name = 'TabA'
entonces sólo devolverá 3.
El punto de @codeMan es muy necesario. Si tiene múltiples bases de datos con el mismo nombre de tabla, entonces su punto es obligatorio. – Ankit