使用带有两个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
列中获得了许多没有“ dropper”(或接近该值)的记录。
关于我在哪里可以开始弄清楚这里发生了什么的任何想法?
我觉得我不了解相对于ORDER BY
子句如何执行MATCH AGAINST
子句。