0

我正在尝试将 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

它仍然返回所有内容,它只是将我想要的结果放在首位。

如何将结果限制为我想要的结果?这很重要,因为我真的需要按照与“按分数”不同的顺序排列它们。

谢谢你。

红猫头鹰

预计到达时间:已回答

在@Vatev 的建议下,我使用了:

SELECT * 
FROM mytable
WHERE MATCH (title, designer_manufacturer,   countryoforigin_materials, additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AND groupID =  'B'

并且得到了(而且只有)我想要的东西!非常感谢。

4

0 回答 0