如何计算表格的列数

54
例如:
tbl_ifo

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

我该如何使用mysql计算这个表格的列数?

8个回答

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

6
@codeMan的观点非常必要。如果您有多个具有相同表名的数据库,则他的观点是必需的。 - Ankit

53

我认为你还需要指定数据库的名称:

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

如果您没有指定数据库名称,那么可能会将所有列都计算在内,只要它与您的表名匹配。例如,您有两个数据库:DBaseA和DbaseB。在DBaseA中,有两个表:TabA(3个字段TabB(4个字段)。而在DBaseB中,又有两个表:TabA(4个字段TabC(4个字段)

如果运行以下查询:

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

它将返回7,因为有两个名为TabA的表。但是通过添加另一个条件table_schema = 'SchemaNameHere'


它将返回7,因为有两个名为TabA的表。但是通过添加另一个条件table_schema = 'SchemaNameHere'
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
  AND table_name = 'TabA'

那么它只会返回3。


我认为你的'DatabaseNameHere'应该改为'SchemaNameHere' - vol7ron
如果您在可能安装了多个相同应用程序的环境中运行此应用程序,则添加数据库名称将提供更准确的结果,因此模式中可能有多个X表。 - Brian Litzinger

7
$cs = mysql_query("describe tbl_info");
$column_count = mysql_num_rows($cs);

或者只需:
$column_count = mysql_num_rows(mysql_query("describe tbl_info"));

这非常聪明和灵活。 - John Contarino

3

要精确计算您的表格列数,您可以通过传递所需的数据库(模式)名称和表格名称,从information_schema.columns中获取表格信息。


参考以下代码:

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

1
你的答案和johntotetwoo一模一样。 - rjmcb
1
是的,因为我的连接问题无法提交答案。但是在我提交之后,已经有两个答案了,其中一个已经被接受了:D - AKZap

1

我有一个更通用的答案,但我认为它对于计算数据库中所有表格的列数很有用:

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

0

这个查询可能会对你有所帮助

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

0

只需使用mysql_fetch_assoc函数并使用count()函数计算数组即可


-1
我想你想知道表格中总条目数! 为此,请使用以下代码... < p> < code> SELECT count ( * ) as Total_Entries FROM tbl_ifo;

这告诉你有多少行,而不是多少列... - easleyfixed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接