Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql AND-Klausel mehrmals in derselben Spalte

Versuchen Sie Folgendes:

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

Folgendes ist los...

Rufen Sie zuerst die Liste der Unterkunfts-IDs ab, die über die Annehmlichkeiten verfügen, an denen Sie interessiert sind:

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

Grenzen Sie dann die Liste so ein, dass sie nur die Eigentums-IDs enthält, die mehr als eine Annehmlichkeit haben. Die Gruppierung nach Eigenschafts-ID bündelt die Ergebnisse in eindeutige Gruppen, basierend auf der Eigenschafts-ID, zu der sie gehören. Dann zählen wir einfach die Anzahl der amenity_names in jeder Gruppe und prüfen, ob es 2 oder mehr ist.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Eine Annahme im obigen Code ist, dass derselbe amenity_name nicht mehr als einmal mit einer property_id verknüpft ist. Um damit zusammenhängende Probleme zu beseitigen, ändern Sie den HAVING -Klausel, um DISTINCT einzuschließen um die Duplikate auszusortieren, aber fügen Sie es nur hinzu, wenn Sie es brauchen.

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