Mysql
 sql >> Base de données >  >> RDS >> Mysql

clause mysql AND sur la même colonne plusieurs fois

Essayez ceci :

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

Voici ce qui se passe...

Tout d'abord, obtenez la liste des ID de propriété qui ont les commodités qui vous intéressent :

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

Ensuite, réduisez la liste pour n'inclure que les identifiants de propriété qui ont plus d'un équipement. Le regroupement par property_id regroupe les résultats dans des groupes uniques en fonction du property_id auquel ils appartiennent. Ensuite, nous comptons simplement le nombre de amenity_names dans chaque groupe et vérifions s'il est supérieur ou égal à 2.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Une hypothèse dans le code ci-dessus est que vous n'aurez pas le même amenity_name associé à un property_id plus d'une fois. Pour éliminer les problèmes liés à cela, modifiez le HAVING clause pour inclure DISTINCT pour éliminer les doublons, mais ne l'ajoutez que si vous en avez besoin.

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