我的狮身人面像指数为books
和categories
(多对多连接)
source books : base
{
sql_attr_multi =uint categories from query; \
select book_id, category_id\
from books\
join book_categories on book_categories.book_id = books.id
}
因此,如果我使用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类中而非在任何其他类别中的图书。
这是可能的,因为所有类别的列表都很大,以便在NOT IN ()
中指定它吗?
答案 0 :(得分:1)
从sphinx v2.1.2开始,有一个LENGTH()函数,返回MVA的长度:)
SELECT id FROM books WHERE categories = 2 AND categories = 3 AND LENGTH(categories) = 2;
函数并不总是在WHERE中工作,所以如果上面的失败可以尝试
SELECT id, LENGTH(categories) as len FROM books
WHERE categories = 2 AND categories = 3 AND len = 2;
(假设你真的意味着和查询。一个OR查询会更棘手,但XOR会很容易)