如何计算表的列数

rjm*_*mcb 41 mysql sql

例如 :

tbl_ifo

id | name  | age | gender 
----------------------------
1  | John  |  15 |  Male
2  | Maria |  18 |  Female
3  | Steph |  19 |  Female
4  | Jay   |  21 |  Male
Run Code Online (Sandbox Code Playgroud)

如何使用mysql计算此表的列?

swa*_*esh 73

SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'tbl_ifo'
Run Code Online (Sandbox Code Playgroud)

  • @codeMan的观点非常必要.如果你有多个具有相同表名的DB,那么他的观点是必须的. (4认同)

Joh*_*Woo 37

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

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'SchemaNameHere'
  AND table_name = 'TableNameHere'
Run Code Online (Sandbox Code Playgroud)

如果您没有指定数据库的名称,则只要它与表的名称匹配,它就有可能计算所有列.例如,你有两个数据库:DBaseA and DbaseB,在DBaseA,它有两个表:塔巴(3场),塔布(4场).而在DBaseB,它再次有两个表:塔巴(4场),TABC(4场).

如果您运行此查询:

SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'TabA'
Run Code Online (Sandbox Code Playgroud)

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

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBaseA'
  AND table_name = 'TabA'
Run Code Online (Sandbox Code Playgroud)

那么它只会返回3.


Toi*_* EU 7

$cs = mysql_query("describe tbl_info");
$column_count = mysql_num_rows($cs);
Run Code Online (Sandbox Code Playgroud)

要不就:

$column_count = mysql_num_rows(mysql_query("describe tbl_info"));
Run Code Online (Sandbox Code Playgroud)


AKZ*_*Zap 5

要精确计算表的列数,您可以information_schema.columns通过传递所需的数据库(架构)名称和表名称来获取表格。


参考以下代码:

SELECT count(*)
FROM information_schema.columns
WHERE table_schema = 'myDB'  
AND table_name = 'table1';
Run Code Online (Sandbox Code Playgroud)