我正在尝试将FULLTEXT搜索与简单的WHERE结合起来,而且我得到的结果太多了。
我正在通过在phpmyadmin中运行SQL进行测试,然后再将其转换为存储过程。
当我跑步时:
SELECT *
FROM mytable
WHERE MATCH(title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
(为了获得目录中的所有玻璃花瓶)它工作正常,给我14个我期望的结果。
mytable中有另一个字段“groupID”,其值为A / B / C.我希望按组过滤这些结果 - 或者相反,只在一个组上运行匹配。
当我跑步时
SELECT *,
MATCH (title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
FROM mytable WHERE groupID = 'B'
它返回B组中的所有!所以我试过
SELECT *,
MATCH (title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AS SCORE
FROM mytable WHERE groupID = 'B'
ORDER BY SCORE DESC
它仍会返回所有内容,它只是将我想要的结果放在首位。
如何将结果限制为我想要的结果?这很重要,因为我真的需要把它们放在与“BY SCORE”不同的顺序中。
谢谢。
Red Owl
ETA:已回答
根据@Vatev的建议,我使用了:
SELECT *
FROM mytable
WHERE MATCH (title, designer_manufacturer, countryoforigin_materials, additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AND groupID = 'B'
得到了我想要的东西!非常感谢你。