返回组数量的最佳方法是什么?我的架构没什么特别的;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
返回组数量的最佳方法是什么?我的架构没什么特别的;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
不,您的解决方案很好。
另一种方法是
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(*),它计算行而不是单个列的值。