Давайте предполагать, у меня есть следующий запрос:MySQL - изменить или И
SELECT Ads.AdId
FROM Ads
, AdsAmenities
WHERE AdsAmenities.amenities_AmenityId IN (2, 18, 1)
AND Ads.AdId = AdsAmenities.ads_AdId
Этот запрос выбирает каждый Адид из таблицы объявления, которая имеет по крайней мере один из следующих трех удобств (2, 18 , 1). Таблица AdsAmenities
такова, где я сохраняю связь между Ads
и Amenities
. Как я могу изменить этот запрос, чтобы он возвращал только AdId, у которых есть все перечисленные amenity idids?
могли бы вы объяснить, в чем разница между вашим ответом, и ответ ниже вашего? Я имею в виду, что это работает в обоих направлениях, как я вижу, и мне интересно, что использование JOIN, которое вы предоставили, имеет какие-то преимущества вообще? Я отмечаю это как правильный ответ, потому что вы были быстрее :) –
@AdamBaranyai: 1) Я использую явную «join» вместо вместо неявного (который вы предоставили), который устарел (неявный). 2) Наши ответы не идентичны в случае, если «AdsAmenities.amments_AmenityId» в результирующем наборе не является uniq, т. Е. Если есть три строки, такие как (2,2,18) для одного «AdsAmenities.amments_AmenityId», приведенный ниже запрос соответствующий 'Ads.AdId', а мой запрос - нет. – potashin