Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

cláusula mysql AND na mesma coluna várias vezes


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

Aqui está o que está acontecendo...

Primeiro, obtenha a lista de IDs de propriedade que possuem as comodidades em que você está interessado:

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

Em seguida, restrinja a lista para incluir apenas os IDs de propriedade que tenham mais de uma comodidade. O agrupamento por property_id agrupa os resultados em grupos exclusivos com base em qual property_id eles pertencem. Então, simplesmente contamos o número de amenity_names em cada grupo e verificamos se é 2 ou mais.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Uma suposição no código acima é que você não terá o mesmo amenity_name associado a um property_id mais de uma vez. Para eliminar problemas relacionados a isso, altere o HAVING cláusula para incluir DISTINCT para eliminar as duplicatas, mas não adicione a menos que você precise.

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