-1

グループの数を返すための最良の方法は何でしょうか?私のスキーマについて特別なことは何もありません。table2には、table1を参照するFKが含まれています。以下はうまくいくようです。何か問題はありますか?より良い方法はありますか?ありがとう

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 に答える