sql >> Database >  >> RDS >> Mysql

mysql AND-clausule meerdere keren in dezelfde kolom

Probeer dit:

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

Dit is wat er aan de hand is...

Haal eerst de lijst op met Property ID's met de voorzieningen waarin u geïnteresseerd bent:

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

Beperk vervolgens de lijst om alleen die Property ID's op te nemen die meer dan één voorziening hebben. Door te groeperen op property_id worden de resultaten gebundeld in unieke groepen op basis van de property_id waartoe ze behoren. Vervolgens tellen we gewoon het aantal amenity_names in elke groep en controleren of het er 2 of meer zijn.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Een aanname in de bovenstaande code is dat u niet meer dan één keer dezelfde amenity_name aan een property_id zult hebben. Om daarmee verband houdende problemen te voorkomen, wijzigt u de HAVING clausule om DISTINCT op te nemen om de duplicaten te verwijderen, maar voeg het niet toe tenzij je het nodig hebt.

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



  1. Cake php Gegevensbronklasse MySQL kon niet worden gevonden

  2. Upsert met een transactie

  3. Hoe een hint geven over de index die moet worden gebruikt in een MySQL-selectiequery?

  4. Gegevens versleutelen in Oracle met PL SQL