我正在尝试使用 OR 和 AND 搜索值
这是 OR 的示例
SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 | 1)' IN BOOLEAN MODE);
这可行,但如果我想做并且
SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 & 1)' IN BOOLEAN MODE);
这将尝试在同一行中查找具有 10 和 1 的联系人,但我想搜索具有 10 和 1 作为 item_id 但位于多行的联系人
例如
contact_id item_id
1 1
1 10
2 10
AND 搜索将返回 contact_id - 1
我认为通过一次搜索不可能实现这一点,但我想在使代码变得比实际需要的更复杂之前先询问一下。
谢谢蒂姆
最佳答案
首先,您滥用了 AND
和 OR
全文搜索运算符。 |
和 &
是 reserved for future use ;按照 documentation 中的说明使用 +
或 -
.
从您的示例中我似乎不明白的另一个方面是,如果您使用整数,为什么要使用全文
搜索。一个简单的 WHERE item_id IN (1, 10)
就足够了。
但是,如果您需要全文
搜索,我建议使用 Sphinx .
关于Mysql bool 运算符全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138772/