2012-05-08 11 views
24

Ad esempio:Come si conta colonne di una tabella

tbl_ifo 

id | name | age | gender 
---------------------------- 
1 | John | 15 | Male 
2 | Maria | 18 | Female 
3 | Steph | 19 | Female 
4 | Jay | 21 | Male 

Come posso contare le colonne di questa tabella usando MySQL?

risposta

47
SELECT count(*) 
FROM information_schema.columns 
WHERE table_name = 'tbl_ifo' 
+3

Il punto di @codeMan è molto necessario. Se si dispone di più DB con lo stesso nome di tabella, il suo punto è obbligatorio. – Ankit

29

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.

+0

Penso che il tuo '' DatabaseNameHere'' dovrebbe essere sostituito con ''SchemaNameHere'' – vol7ron

+0

L'aggiunta del nome del database fornirà risultati più accurati se stai eseguendo questo in un ambiente in cui potresti avere installato più di una stessa app, quindi più X le tabelle sono nello schema. –

2

a contare le colonne della tabella precisamente, si può ottenere sotto forma information_schema.columns con passare il database desiderato Nome e Tabella (Schema) Nome.


riferimento il seguente codice:

SELECT count(*) 
FROM information_schema.columns 
WHERE table_schema = 'myDB' 
AND table_name = 'table1'; 
+0

la tua risposta è la stessa di johntotetwoo – rjmcb

+1

sì, perché non posso inviare la mia risposta a causa della mia connessione. ma dopo la mia presentazione, ci sono due risposte e una è già accettata: D – AKZap

0

Basta usare mysql_fetch_assoc e contare la matrice utilizzando la funzione count()

0

questa query può aiutare

SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_CATALOG = 'database' AND TABLE_SCHEMA = 'dbo' 
AND TABLE_NAME = 'tbl_ifo' 
3
$cs = mysql_query("describe tbl_info"); 
$column_count = mysql_num_rows($cs); 

O solo:

$column_count = mysql_num_rows(mysql_query("describe tbl_info")); 
+0

questo è molto intelligente e flessibile –

Problemi correlati