句を使用すると、having実際にはそれらのレコードが失われます。havingしたがって、句を使用することはできません。それとは別に、ORsを使用すると、どの条件が。になるかはわかりませんtrue。
したがって、使用する必要があるのは、グループ化されたすべての値を保持する派生テーブルです。それができたら、そのテーブルをクエリして、それぞれのカウントを取得します。ただし、このソリューションでは、3行ではなく3列が提供されます。簡単なものを選びましょう:
SELECT
SUM(condition_one) condition_one,
SUM(condition_two) condition_two,
SUM(condition_three) condition_three
FROM (
SELECT * FROM t
GROUP BY j
) final
これcondition_oneは実際にはなどの条件ですage = 23が、MySQLの条件は0forfalseと1forを返すため、true実際に条件を設定できSUMます。
UNIONさて、それらを行にしたい場合は、それぞれの値を個別に設定する必要があるため、少し複雑になります。
SELECT 'condition_one: ' Condition, SUM(condition_one) ConditionCount FROM (
SELECT * FROM t GROUP BY j
) s1
UNION ALL
SELECT 'condition_two: ', SUM(condition_two) FROM (
SELECT * FROM t GROUP BY j
) s2
UNION ALL
SELECT 'condition_three: ', SUM(condition_three) FROM (
SELECT * FROM t GROUP BY j
) s3
または少なくとも、それは私が今考えることができる最良の方法です。お役に立てれば!