2012-05-08 39 views
24

Ví dụ:Làm thế nào để đếm cột của một bảng

tbl_ifo 

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

Làm thế nào tôi có thể đếm các cột của bảng này sử dụng mysql?

Trả lời

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

@codeMột điểm rất cần thiết. Nếu bạn có nhiều DB với cùng một tên bảng thì điểm của anh ấy là phải. – Ankit

29

Tôi nghĩ bạn cũng cần phải xác định tên của cơ sở dữ liệu:

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

nếu bạn không chỉ định tên của cơ sở dữ liệu của bạn, rất có thể nó sẽ đếm tất cả các cột miễn là nó khớp với tên bảng của bạn. Ví dụ: bạn có hai cơ sở dữ liệu: DBaseA and DbaseB, trong DBaseA, có hai bảng: TabA (3 trường), TabB (4 trường). Và trong DBaseB, nó lại có hai bảng: TabA (4 trường), TabC (4 trường).

nếu bạn chạy truy vấn này:

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

nó sẽ trở lại 7 vì có hai bảng tên TabA. Nhưng bằng cách thêm một điều kiện table_schema = 'SchemaNameHere':

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

sau đó nó sẽ chỉ trả lại 3.

+0

Tôi nghĩ rằng 'DatabaseNameHere'' của bạn nên được thay thế bằng' 'SchemaNameHere'' – vol7ron

+0

Thêm tên cơ sở dữ liệu sẽ cung cấp kết quả chính xác hơn nếu bạn đang chạy điều này trong môi trường nơi bạn có thể cài đặt nhiều ứng dụng giống nhau. các bảng nằm trong lược đồ. –

2

Để đếm các cột của bảng của bạn một cách chính xác, bạn có thể lấy mẫu information_schema.columns với đi qua cơ sở dữ liệu mong muốn của bạn (Schema) Tên và Bảng Tên.


tham khảo Bộ luật sau:

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

câu trả lời của bạn cũng giống như johntotetwoo – rjmcb

+1

có, bởi vì tôi không thể gửi câu trả lời do kết nối của tôi. nhưng sau khi tôi gửi, có hai câu trả lời và một câu trả lời đã được chấp nhận: D – AKZap

0

Đơn giản chỉ cần sử dụng mysql_fetch_assoc và đếm mảng sử dụng) chức năng (count

0

truy vấn này có thể giúp bạn

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 chỉ:

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

điều này rất thông minh và linh hoạt –

Các vấn đề liên quan