Mysql
 sql >> Database >  >> RDS >> Mysql

mysql AND clausola sulla stessa colonna più volte

Prova questo:

SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id 
HAVING COUNT(amenity_name) >= 2

Ecco cosa sta succedendo...

Per prima cosa, ottieni l'elenco degli ID proprietà che hanno i servizi che ti interessano:

SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')

Quindi restringere l'elenco per includere solo gli ID proprietà che dispongono di più servizi. Il raggruppamento per property_id raggruppa i risultati in gruppi univoci in base a quale property_id a cui appartengono. Quindi, contiamo semplicemente il numero di amenity_names in ogni gruppo e controlliamo se è 2 o più.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Un presupposto nel codice sopra è che non avrai lo stesso amenity_name associato a un property_id più di una volta. Per eliminare i problemi relativi a ciò, cambia il HAVING clausola per includere DISTINCT per eliminare i duplicati, ma non aggiungerlo a meno che non sia necessario.

GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2