При использовании предложения WHERE
с двумя условиями MATCH AGAINST
и ORDER BY
с двумя столбцами условия MATCH AGAINST
игнорируются.
Я использую InnoDB.
Мой оригинальный запрос намного сложнее.Я могу заставить запрос работать правильно, удалив пункты MATCH AGAINST
или ORDER BY
.Тем не менее, я нуждаюсь в них всех.
Я свел это к самому маленькому проблемному запросу.Если я удаляю один из столбцов ORDER BY
, предложения MATCH AGAINST
не игнорируются.
Я не могу найти причину этого, поэтому большинство вещей, которые я пробовал, просто предполагают.
SELECT
service_requests.title,
locations.company
FROM service_requests
LEFT JOIN machines `machines` ON (service_requests.machineId = machines.id)
LEFT JOIN locations `locations` ON (machines.locationId = locations.id)
WHERE (
MATCH(service_requests.title) AGAINST('+dropper*' IN BOOLEAN MODE)
OR MATCH(locations.company) AGAINST('+dropper*' IN BOOLEAN MODE)
)
ORDER BY service_requests.createdAt, service_requests.machineId;
Из этого запроса я ожидаю получить записи, у которых в столбцах title
или company
есть «пипетка».И я получаю это, если я удаляю один из столбцов ORDER BY
.Однако в обоих столбцах я получаю много записей без «дроппера» (или чего-либо подобного) в столбцах title
или company
.
Есть идеи, где я могу начать выяснять, что здесь происходит?
Мне кажется, что я не понимаю, как выполняются предложения ORDER BY
относительно предложений MATCH AGAINST
.