Si supponga Ho una tabella abbonamenti:Come controllare se il valore esiste in ogni gruppo (dopo il gruppo da)
uid | subscription_type
------------------------
Alex | type1
Alex | type2
Alex | type3
Alex | type4
Ben | type2
Ben | type3
Ben | type4
E voglio selezionare solo gli utenti che hanno più di 2 abbonamenti, ma mai sottoscritto con il tipo 1
Il risultato previsto è selezionare solo "Ben".
io posso facilmente trovato gli utenti che hanno più di 2 sottoscrive utilizzando:
SELECT uid
FROM subscribes
GROUP BY uid
HAVING COUNT(*) > 2
Ma come per controllare se in un gruppo qualche valore non esiste mai?
Grazie per l'aiuto!
'Ma come per controllare se in un gruppo un certo valore non esiste mai' forse avete bisogno di aggiungere una? dove clausola con un 'NOT EXITS (..)'! – wildplasser
Ho provato questo: SELEZIONA uid DA sottoscrive GROUP BY cid, offrire HAVING COUNT (*)> 2 E NON ESISTE ( \t SELEZIONA uid, subscription_type \t DA sottoscrive \t DOVE subscription_type = 'rinnovano') Ma non funziona, restituisce la tabella vuota – Spivakos
È necessario * associare * l'uid nella sottoquery a quella della query principale. Quindi dovrebbe funzionare. Inoltre: dovrebbe essere in una clausola 'WHERE', non in una clausola having. – wildplasser