-1

返回组数量的最佳方法是什么?我的架构没什么特别的;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
4

1 回答 1

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。

手册

COUNT()、MIN() 和 SUM() 等聚合(汇总)函数会忽略 NULL 值。对此的例外是 COUNT(*),它计算行而不是单个列的值。

于 2013-01-17T14:42:57.127 回答