2012-05-08 15 views
24

Na przykład:Jak mogę liczyć kolumny tabeli

tbl_ifo 

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

Jak mogę liczyć kolumny tej tabeli MySQL?

Odpowiedz

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

Punkt @codeMan jest bardzo potrzebny. Jeśli masz wiele baz danych o tej samej nazwie tabeli, to jego punkt jest konieczny. – Ankit

29

myślę, że trzeba również podać nazwę bazy danych:

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

jeśli nie podać nazwę bazy danych, są szanse, będzie ona liczyć wszystkie kolumny tak długo, jak pasuje do nazwy twojego stołu. Na przykład, masz dwie bazy danych: DBaseA and DbaseB, W DBaseA, ma dwie tabele: Taba (3 pola), Tabb (4 pola). I w DBaseB, ponownie ma dwie tabele: TabA (4 pola), TabC (4 pola).

jeśli uruchomić tę kwerendę:

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

powróci 7, ponieważ istnieją dwie tabele nazwanych TabA. Ale przez dodanie kolejnego warunku table_schema = 'SchemaNameHere':

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

następnie powróci tylko 3.

+0

Myślę, że nazwa ''DatabaseNameHere'' powinna zostać zastąpiona'' SchemaNameHere'' – vol7ron

+0

Dodanie nazwy bazy danych zapewni dokładniejsze wyniki, jeśli używasz tego w środowisku, w którym możesz mieć wiele zainstalowanych tej samej aplikacji, a więc wiele X tabele są w schemacie. –

2

policzyć kolumny tabeli precyzyjnie, można uzyskać formularz information_schema.columns z przechodzącej żądany Database (Schema) Nazwa i tabela Nazwa.


referencyjny następujący kod:

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

Twoja odpowiedź jest taka sama jak johntotetwoo – rjmcb

+1

tak, ponieważ nie mogę przesłać odpowiedzi z powodu połączenia. ale po moim przesłaniu są dwie odpowiedzi i jedna jest już zaakceptowana: D – AKZap

0

Wystarczy użyć mysql_fetch_assoc i policzyć tablicę używając funkcji count()

0

zapytanie to może pomóc

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 r po prostu:

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

to jest bardzo sprytne i elastyczne –

Powiązane problemy