返回群组数量的最佳方法是什么?我的架构没什么特别之处; 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
答案 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(*),它计算行而不是单个列值。