Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql klauzula AND wielokrotnie w tej samej kolumnie

Spróbuj tego:

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

Oto, co się dzieje...

Najpierw zdobądź listę identyfikatorów obiektów, w których znajdują się interesujące Cię udogodnienia:

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

Następnie zawęź listę, aby zawierała tylko te identyfikatory właściwości, które mają więcej niż jedno udogodnienie. Grupowanie według property_id łączy wyniki w unikalne grupy na podstawie tego, do którego property_id należą. Następnie po prostu liczymy liczbę amenity_names w każdej grupie i sprawdzamy, czy jest ona 2 lub większa.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Jedno założenie w powyższym kodzie jest takie, że nie będziesz mieć tego samego amenity_name skojarzonego z atrybutem property_id więcej niż raz. Aby wyeliminować problemy z tym związane, zmień HAVING klauzula do uwzględnienia DISTINCT aby wyeliminować duplikaty, ale nie dodawaj ich, chyba że tego potrzebujesz.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie tabeli nie powiodło się, a ograniczenie klucza obcego jest niepoprawnie utworzone

  2. Jak ustawić limit czasu zapytania w Sequelize?

  3. Baza danych użytkowników MySQL nie ma kolumn z hasłami - Instalowanie MySQL na OSX

  4. Ogólne przechodzenie przez drzewo (nieskończone) w przeszukiwaniu wszerz;

  5. Błąd składni MySQL podczas tworzenia tabeli