sql >> Base de Datos >  >> RDS >> Mysql

cláusula mysql AND en la misma columna varias veces

Prueba esto:

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

Esto es lo que está pasando...

Primero, obtenga la lista de ID de propiedades que tienen los servicios que le interesan:

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

Luego reduzca la lista para incluir solo aquellas ID de propiedad que tienen más de un servicio. La agrupación por property_id agrupa los resultados en grupos únicos según el property_id al que pertenecen. Luego, simplemente contamos el número de amenity_names en cada grupo y verificamos si son 2 o más.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Una suposición en el código anterior es que no tendrá el mismo amenity_name asociado con un property_id más de una vez. Para eliminar problemas relacionados con eso, cambie HAVING cláusula para incluir DISTINCT para eliminar los duplicados, pero no lo agregue a menos que lo necesite.

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