Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Sphinx sql_attr_multi-如何找到值的精确组合?_Mysql_Sphinx - Fatal编程技术网

Mysql Sphinx sql_attr_multi-如何找到值的精确组合?

Mysql Sphinx sql_attr_multi-如何找到值的精确组合?,mysql,sphinx,Mysql,Sphinx,我有一个书籍和类别的斯芬克斯索引(多对多连接) 因此,如果我使用MySQL连接来检索记录,它将如下所示: -- get all books that are in categories 2 and 3 at the same time SELECT id FROM books WHERE categories = 2 AND categories = 3; 这将给我一个分类为2和3的书籍列表,但也可以是任何其他类别的书籍 我想做的是将结果限制在那些只属于第2类和第3类而不属于任何其他类别的书

我有一个
书籍
类别
的斯芬克斯索引(多对多连接)

因此,如果我使用MySQL连接来检索记录,它将如下所示:

-- get all books that are in categories 2 and 3 at the same time
SELECT id FROM books WHERE categories = 2 AND categories = 3;
这将给我一个分类为2和3的书籍列表,但也可以是任何其他类别的书籍

我想做的是将结果限制在那些只属于第2类和第3类而不属于任何其他类别的书籍上


考虑到所有类别的列表太大,无法在
而不是()中指定它,这是可能的吗

从sphinx v2.1.2开始,有一个LENGTH()函数,返回MVA的长度:)

函数不总是在何处工作,所以如果上面失败,可以尝试

SELECT id, LENGTH(categories) as len FROM books 
  WHERE categories = 2 AND categories = 3 AND len = 2;

(假设你真的是指和查询。OR查询会更复杂,但XOR会很容易)

你的第二个维恩图不是显示了2或3吗?也可以,但不能两者兼而有之。但在描述中,是说和。因此,维恩图应该是蓝色的2和3之间的重叠。
SELECT id FROM books WHERE categories = 2 AND categories = 3 AND LENGTH(categories) = 2;
SELECT id, LENGTH(categories) as len FROM books 
  WHERE categories = 2 AND categories = 3 AND len = 2;