Bạn có thể thử với having
:
SELECT Ads.AdId
FROM Ads
JOIN AdsAmenities ON Ads.AdId = AdsAmenities.ads_AdId
WHERE AdsAmenities.amenities_AmenityId IN (2, 18, 1)
GROUP BY Ads.AdId
HAVING COUNT(distinct AdsAmenities.amenities_AmenityId) = 3
Trong trường hợp AdsAmenities.amenities_AmenityId
giá trị là uniq, bạn có thể bỏ qua distinct
một phần.