Я создал функцию Mysql, которая дает результат целое или NULL. Работает нормально для всех значений. Если использовать эту функцию в простом запросе, она также работает как ожидалось, как следующий запрос:
select distinct(hsd.hotel_id)
from hotel_season_detail hsd
where '2019-04-26' BETWEEN hsd.season_fromdate and hsd.season_todate and hsd.stop_sale >'2019-04-26' and getHotelMarkupManagementId(hsd.id,'AFG') is NOT NULL
getHotelMarkupManagementId()
- определяемая пользователем функция mysql. Как и в предыдущем запросе, вернуть два идентификатора отеля, которые уже существуют в таблице отелей.
Но когда этот запрос добавлен как подзапрос, такой как
select * from hotel_service
where id in
(select distinct(hsd.hotel_id)
from hotel_season_detail hsd where '2019-04-26' BETWEEN hsd.season_fromdate and hsd.season_todate and hsd.stop_sale >'2019-04-26' and getHotelMarkupManagementId(hsd.id,'AFG')
is NOT NULL)
Это дает неправильный результат. Это не работает, как ожидалось.
select * from hotel_service where id in (125,126)
дает результат, а подзапрос также дает идентификатор 125 и 126 в качестве результата, если выполняется индивидуально. но при добавлении в качестве подзапроса происходит сбой
Должно ли это поведение из-за mysql function
в IN
предложении? Пожалуйста, предложите.