2017-05-17 16 views
0
は、私は次のクエリをしている

同じすべての値を持ちます:MySQLのGROUP_CONCAT

+------+-----------------+ 
| id | active_statuses | 
+------+-----------------+ 
| 2 | 0,1,1   | 
| 3 | 1,1    | 
| 6 | 1    | 
| 7 | 1,1,1   | 
| 12 | 0,0,1   | 
+------------------------+ 

HAVING句内のすべての値active_statuses場合は、1点のある場合はどうすれば確認できますか?これは私にはchargesが必要です。

答えて

3

条件集合を使用するHAVING節を試して、グループごとに非1ステータスが発生しないようにしてください。

SELECT 
    charges.id, 
    GROUP_CONCAT(bic.is_deactivated) AS active_statuses 
FROM charges 
LEFT JOIN billing_invoice_charges AS bic 
    ON bic.charge_id = charges.id 
GROUP BY charges.id 
HAVING SUM(CASE WHEN bic.is_deactivated <> 1 THEN 1 ELSE 0 END) = 0 
1

てみてください。active_statusesをHAVING `

+0

まあ、これもわずかに加えて私のために働いたactive_statusesで0と任意の結果を無視すべきで

SELECT charges.id, GROUP_CONCAT(bic.is_deactivated) AS active_statuses FROM charges LEFT JOIN billing_invoice_charges AS bic ON bic.charge_id = charges.id GROUP BY charges.id HAVING active_statuses NOT LIKE '%0%' 

は好きでは '%0%' OR active_statusesはNULLである。しかし、私の質問によれば、これは正しいです! – Abhi