У меня есть следующий запрос:WHERE [1 из этих значений] в [1 из этих значений]
SELECT A.id FROM logsen_alertes A
WHERE
(SELECT LA2.type_colocation_id
FROM logsen_liaisons_annonces_types_colocations LA2
WHERE LA2.annonce_id = 25 AND LA2.annonce_type = 4
)
IN
(SELECT L4.souhait
FROM logsen_liaisons_alertes_souhaits L4
WHERE L4.alerte_id = A.id
)
Этот запрос работает хорошо, когда мой первый подзапрос возвращает только 1 значение, потому что это, как работает IN() , ища 1 уникальное значение в наборе значений. Когда мой первый подзапрос возвращает 2 или более значений, MySQL возвращает мне «Subquery возвращает более 1 строки». Как заставить мой запрос работать, когда первый подзапрос возвращает несколько значений? Что-то вроде «WHERE [любое из этих значений], которое я нашел в [ny этих значений]»?
работает как шарм. Я предпочел этот ответ другому, потому что я слышал, что каждое ограничение запроса должно быть помещено в WHERE вместо JOIN. – VaN
@ user2083586 - Не знаю, где вы слышали эту ерунду. Пожалуйста, удалите это из своего ума - это старая школа –
Тогда я не понимаю, почему вы положили «LA2.annonce_id = 25 AND LA2.annonce_type = 4» в инструкцию WHERE вместо того, чтобы поместить ее в оператор JOIN. Не могли бы вы прояснить этот выбор? – VaN