MySQL 有效且正确地链接 GROUP BY 结果

标签 mysql

有没有一些有效的方法来编写查询,将 GROUP BY 的各种结果连接到一个公用表上? MySQL 如何处理子组上聚合函数的合并结果,其中包含原始表中的完整字段?

我正在使用这个并且它很慢(而且我还需要除 CONDITION=1 之外的其他条件)

SELECT a.CID,a.AS_ALL,b.AS_ACTIVE FROM 
            (SELECT CID,COUNT(DISTINCT RAID) AS AS_ALL FROM MYTABLE GROUP BY CID) a
            LEFT JOIN
            (SELECT CID,COUNT(DISTINCT RAID) AS AS_ACTIVE FROM MYTABLE WHERE CONDITION=1 GROUP BY CID ) b ON a.CID=b.CID;

也可以节省使用类似的东西吗? MySQL 会始终正确地将 COLUMN_A 与聚合结果合并吗?

SELECT  COLUMN_A COUNT(DISTINCT COLUMN_A), SUM(COLUMN_A),SUM(COLUMN_B) FROM ATABLE WHERE CONDITION=1 GROUP BY COLUMN_C 

多谢指教

最佳答案

试试这个:

SELECT CID,COUNT(DISTINCT RAID) AS AS_ALL,SUM(IF(CONDITION=1, 1, 0)) AS AS_ACTIVE 
FROM MYTABLE GROUP BY CID

关于MySQL 有效且正确地链接 GROUP BY 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13584137/

相关文章:

php - 在 MYSQL 中添加两行的值并将它们组合成一行

mysql - 使用 Set::extract 过滤数据集的一部分

mysql - 如何在mysql命令客户端中知道mysql变量是系统变量还是用户定义的var?

mysql 使用日期范围的最大和最小子查询

MySQL按计数顺序左连接2个表

php - 获取行数和回显

php - 远程使用 MySqlDump 时 MySql 表锁定?

php - 获取另一个页面的id

mysql - SQL Select符号||是什么意思意思是?

php - 尝试从数据库中拉回复选框状态并将其显示在表单上