Credo che è necessario anche specificare il nome del database:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'SchemaNameHere'
AND table_name = 'TableNameHere'
se non si specifica il nome del database, è probabile che conterà tutte le colonne finché corrisponde al nome del tuo tavolo. Ad esempio, si dispone di due database: DBaseA and DbaseB
, In DBaseA
, ha due tabelle: Taba (3 campi), Tabb (4 campi). E in DBaseB
, ha di nuovo due tabelle: TabA (4 campi), TabC (4 campi).
se si esegue questa query:
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'TabA'
verrà restituito 7 perché ci sono due tabelle denominate TabA
. Ma con l'aggiunta di un'altra condizione table_schema = 'SchemaNameHere'
:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
AND table_name = 'TabA'
allora restituisce solo 3.
fonte
2012-05-08 03:39:08
Il punto di @codeMan è molto necessario. Se si dispone di più DB con lo stesso nome di tabella, il suo punto è obbligatorio. – Ankit