Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql AND клауза в една и съща колона няколко пъти

Опитайте това:

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

Ето какво се случва...

Първо, вземете списъка с идентификатори на собственост, които имат удобствата, от които се интересувате:

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

След това стеснете списъка, за да включите само тези идентификатори на имоти, които имат повече от едно удобство. Групирането по property_id обединява резултатите в уникални групи въз основа на кой property_id принадлежат. След това просто преброяваме броя на amenity_names във всяка група и проверяваме дали е 2 или повече.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Едно предположение в кода по-горе е, че няма да имате едно и също amenity_name, свързано с property_id повече от веднъж. За да премахнете проблеми, свързани с това, променете HAVING клауза да включва DISTINCT за да премахнете дубликатите, но не го добавяйте, освен ако не ви трябва.

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. Как да изхвърлям само определени таблици от MySQL?

  2. Как да присвоите повторно колона AUTO_INCREMENT за всеки ред в MySQL таблица с помощта на PHP

  3. Какви са еквивалентите на sqlite на INTERVAL и UTC_TIMESTAMP на MySQL?

  4. Внедряване на трендови маркери, базирано на Mysql json

  5. UTC_TIMESTAMP() Примери – MySQL