获取MySQL GROUP的数量

时间:2013-01-17 14:35:21

标签: mysql

返回群组数量的最佳方法是什么?我的架构没什么特别之处; table2包括FK引用table1。以下似乎有效。有什么问题吗?有更好的方法吗?感谢

SELECT COUNT(*) FROM (
 SELECT COUNT(*)
 FROM table1 AS t1
 INNER JOIN table2 AS t2 ON t2.t1_id=t1.id
 WHERE t1.x=1 AND t2.y=1
 GROUP BY t2.z
) AS grouping

1 个答案:

答案 0 :(得分:1)

不,你的解决方案很好。

另一种方式是

SELECT COUNT(DISTINCT t2.z) 
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t2.t1_id=t1.id
WHERE t1.x=1 AND t2.y=1

这也包括NULL。

来自manual

  

聚合(摘要)函数(如COUNT(),MIN()和SUM())忽略NULL值。例外情况是COUNT(*),它计算行而不是单个列值。