web-dev-qa-db-fra.com

Comment compter les colonnes d'un tableau

Par exemple :

tbl_ifo

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

Comment compter les colonnes de cette table en utilisant mysql?

32
rjmcb
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'tbl_ifo'
62
swapnesh

Je pense que vous devez également spécifier le nom de la base de données:

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'SchemaNameHere'
  AND table_name = 'TableNameHere'

si vous ne spécifiez pas le nom de votre base de données, il y a de fortes chances qu'elle compte toutes les colonnes tant qu'elle correspond au nom de votre table. Par exemple, vous avez deux bases de données: DBaseA and DbaseB, dans DBaseA, il a deux tables: TabA ( 3 champs ), TabB (4 champs). Et dans DBaseB, il a encore deux tables: TabA ( 4 champs ), TabC (4 champs).

si vous exécutez cette requête:

SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'TabA'

il retournera 7 car il y a deux tables nommées TabA. Mais en ajoutant une autre condition table_schema = 'SchemaNameHere':

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
  AND table_name = 'TabA'

alors il ne retournera que 3.

35
John Woo
$cs = mysql_query("describe tbl_info");
$column_count = mysql_num_rows($cs);

Ou juste:

$column_count = mysql_num_rows(mysql_query("describe tbl_info"));
4
Toivo EU

Pour compter les colonnes de votre table avec précision, vous pouvez obtenir le formulaire information_schema.columns en passant votre nom de base de données (schéma) et votre nom de table souhaités.


Référencez le code suivant:

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

J'ai une réponse plus générale. mais je crois qu'il est utile de compter les colonnes de toutes les tables d'un DB:

SELECT table_name, count(*)
FROM information_schema.columns
GROUP BY table_name;
1
Douglas.Sesar

cette requête peut vous aider

SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_CATALOG = 'database' AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'tbl_ifo'
0
varsha