sql >> Database teknologi >  >> RDS >> Mysql

mysql OG klausul i samme kolonne flere gange

Prøv dette:

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

Her er hvad der sker...

Først skal du få listen over ejendoms-id'er, der har de faciliteter, du er interesseret i:

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

Indsnæv derefter listen til kun at inkludere de ejendoms-id'er, der har mere end én faciliteter. Gruppering efter property_id samler resultaterne i unikke grupper baseret på hvilket property_id de tilhører. Derefter tæller vi simpelthen antallet af amenity_names i hver gruppe og kontrollerer, om det er 2 eller flere.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

En antagelse i koden ovenfor er, at du ikke vil have det samme amenity_name tilknyttet et ejendoms-id mere end én gang. For at eliminere problemer relateret til det, skal du ændre HAVING klausul for at inkludere DISTINCT at luge ud i dubletterne, men tilføj det ikke, medmindre du har brug for det.

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



  1. hvordan man bruger en streng som formel for matematiske beregninger i php?

  2. Sådan undslipper du sikkert inputdata i php til mysql

  3. Indsæt data via en funktion med tabelværdi i SQL Server

  4. Tilføjelse af timer, minutter, sekunder til SQL Date