ORDER BY子句中断了与子句的匹配

时间:2019-05-16 15:19:47

标签: mysql sql

使用带有两个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;

从该查询中,我希望获得在其titlecompany列中具有“滴管”的记录。而且,如果我删除了ORDER BY列之一,我确实做到了。但是,在这两列中,我在titlecompany列中获得了许多没有“ dropper”(或接近该值)的记录。

关于我在哪里可以开始弄清楚这里发生了什么的任何想法?

我觉得我不了解相对于ORDER BY子句如何执行MATCH AGAINST子句。

0 个答案:

没有答案