当返回的列数是动态时,如何计算MySQL查询的列?

时间:2013-02-14 22:30:38

标签: mysql

是否可以检索查询返回的列数?这可以使用绑定的脚本语言(如php)轻松完成,但我正在寻找仅限db的解决方案。

示例:

CountCols(SELECT 'a','b','c')
    => 3
CountCols(SELECT * FROM information_schema.session_variables)
    => 2

3 个答案:

答案 0 :(得分:3)

这对你有用吗?

select 
    count(*)
from
    `information_schema`.`columns`
where
    `table_schema` = 'my_table_schema' and `table_name` = 'my_table_name';

如果表名存在于多个数据库中,则只需使用table_schema


根据您的回复评论,您希望计算动态列数。您可以使用临时表执行此操作,但无法访问临时表的数据,而installing a patch可能无法访问。

值得注意的是,a similar outstanding SO question询问如何从临时表中选择列。

答案 1 :(得分:1)

如果您想知道表中的列,请执行以下操作:

DESCRIBE `table_name`

否则,除了选择*选择某些列之外,没有“真实”方式来获取选择查询中的列数 - >所以会知道你选择了多少列。

答案 2 :(得分:1)

您最有可能找到答案:http://dev.mysql.com/doc/refman/5.0/en/columns-table.html

写一个带有表名param的查询,然后查询该表的列并将其相加。