在一个查询中选择计数和其他记录

Posted

技术标签:

【中文标题】在一个查询中选择计数和其他记录【英文标题】:select count and other records in one single query 【发布时间】:2010-12-24 17:45:55 【问题描述】:

我有以下问题

select main_cat_name,cat_url from mf_main order by main_cat_name

这将返回我的表的全部数据。现在我想计算该表的总行数。我可以使用另一个查询来做到这一点,但我如何在一个查询中使用它们???

我想要两个数据一个:- 表的行二:- 计数 我怎么能在一个查询中得到它

我试过了,但它给出了正确的计数,但只显示了表格的第一行:

select count(cat_id),main_cat_name,cat_url from mf_main order by main_cat_name

【问题讨论】:

如果您正在处理 php,它会为您完成工作.. 没有,即使在 php 中它也没有做我想做的事情:-( 【参考方案1】:

您可以尝试使用 Group By,例如:

SELECT count(cat_id), main_cat_name, cat_url FROM mf_main GROUP BY main_cat_name, cat_url ORDER BY main_cat_name

我希望有正确的解决方案:

这就是你想要的:)

SELECT x.countt, main_cat_name, cat_url FROM mf_main, (select count(*) as countt FROM mf_main) as x ORDER BY main_cat_name

如果你使用 mysql,你会像我一样使用“as”。对于其他人,db 可能没有 as(如 oracle)

【讨论】:

【参考方案2】:

你可以试试

select main_cat_name,cat_url,
COUNT(*) OVER () AS total_count
from mf_main
order by main_cat_name

不确定 MySQL 是否接受AS,如果不接受就删除它。

【讨论】:

【参考方案3】:
select count(cat_id), main_cat_name, cat_url 
from mf_main
group by main_cat_name, cat_url
order by main_cat_name

【讨论】:

这给每个 cat_name 计数 1【参考方案4】:

一旦你已经创建了一个选择语句

已经有 num_rows 记录您的计数为 num_rows

【讨论】:

【参考方案5】:

如果您不使用 WHERE 查询并且不以任何其他方式限制输出,例如使用 GROUP BY,则结果中的行数将与表中的行数匹配,因此您可以使用数据库驱动程序特定的方法来查找行数,例如mysql_num_rows 在 PHP 中

【讨论】:

以上是关于在一个查询中选择计数和其他记录的主要内容,如果未能解决你的问题,请参考以下文章

如何选择一个查询中的列不在其他查询的列之间的记录?

选择查询和操作查询有何区别?

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

创建一个用其他表的记录计数填充的表

查询以查找累积同时减去其他计数

如何在 hbase 表中获取计数记录?查询记录的最快方法是啥?