Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mệnh đề mysql AND trên cùng một cột nhiều lần

Hãy thử điều này:

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

Đây là những gì đang xảy ra ...

Trước tiên, hãy lấy danh sách ID thuộc tính có các tiện ích mà bạn quan tâm:

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

Sau đó, thu hẹp danh sách để chỉ bao gồm những ID thuộc tính có nhiều hơn một tiện ích. Nhóm theo property_id sẽ gói các kết quả thành các nhóm duy nhất dựa trên property_id mà chúng thuộc về. Sau đó, chúng tôi chỉ cần đếm số lượng amenity_names trong mỗi nhóm và kiểm tra xem nó có 2 hoặc nhiều hơn không.

GROUP BY property_id HAVING COUNT(amenity_name) >= 2

Một giả định trong đoạn mã trên là bạn sẽ không có cùng một amenity_name được liên kết với một property_id nhiều lần. Để loại bỏ các vấn đề liên quan đến điều đó, hãy thay đổi HAVING mệnh đề bao gồm DISTINCT để loại bỏ các phần trùng lặp, nhưng không thêm nó trừ khi bạn cần.

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. SELECT / GROUP BY - chuỗi giá trị

  2. MySQL Cần trợ giúp xác định SQL để loại bỏ các hàng không mong muốn

  3. Cách khôi phục / tạo lại cơ sở dữ liệu 'mysql' mặc định của mysql

  4. Cách cho phép tìm kiếm toàn văn bản với dấu gạch ngang trong truy vấn tìm kiếm

  5. Menu động php bootstrap mysql