Questo dovrebbe essere molto semplice, lo so, ma per la vita di me non riesco a ottenere la mia query per fare ciò che mi serve.Gruppo MySQL con clausola where con avere un numero maggiore di 1
Sto cercando di trovare tutte le righe che sono un determinato stato (paid
) raggruppate per ref
ma solo se è stata trovata più di 1 riga.
Questa è la mia tabella di esempio:
+-----+----------+----------+-------+
| id | deleted | status | ref |
+-----+----------+----------+-------+
| 1 | 0 | pending | 10001 |
| 2 | 0 | paid | 10001 |
| 3 | 0 | paid | 10001 |
| 4 | 0 | paid | 10002 |
| 5 | 1 | pending | 10002 |
| 6 | 1 | paid | 10002 |
| 7 | 0 | pending | 10003 |
| 8 | 0 | paid | 10003 |
| 9 | 0 | paid | 10003 |
| 10 | 0 | paid | 10003 |
| 11 | 0 | pending | 10004 |
| 12 | 0 | paid | 10004 |
| 13 | 1 | pending | 10005 |
| 14 | 1 | paid | 10005 |
| 15 | 1 | paid | 10005 |
| 16 | 0 | paid | 10005 |
| 17 | 0 | pending | 10006 |
| 18 | 0 | paid | 10006 |
| 19 | 0 | paid | 10006 |
+-----+----------+----------+-------+
Questo è il mio SQL:
SELECT * FROM `orders`
WHERE `deleted` = 0 AND `status` = 'paid'
GROUP BY SUBSTR(`ref`,0,5)
HAVING COUNT(*) > 1
ORDER BY `id` DESC
ho bisogno di farlo corrispondenza da SUBSTR causa ref
volte che contiene i numeri che seguono.
Il problema è che la mia domanda sta tornando in questo modo:
+-----+----------+---------+-------+
| id | deleted | status | ref |
+-----+----------+---------+-------+
| 2 | 0 | paid | 10001 |
+-----+----------+---------+-------+
Quando mi piacerebbe che ritornerà ref
s 10001
, 10003
& 10006
.
Qualcuno può aiutarmi a capire cosa sto facendo male?
Grazie
E sono stato battuto da 8 secondi .. :) – barsju
Grazie! Apprezzo .. Ho incluso la citazione dal doc .. Questo è quello che mi costa 8 secondi .. :) – barsju