首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql查询的对称差分或分离合并

mysql查询的对称差分或分离合并
EN

Stack Overflow用户
提问于 2020-03-13 10:26:07
回答 1查看 184关注 0票数 1

如果客户搜索两个或多个关键字,我需要返回两组MySQL结果:

1)主要结果:这些关键词的相交(项目只匹配所有关键字)

2)次要结果:匹配关键词的对称差分/析取合并项(匹配某些关键字,而不是所有关键字)

我可以使用布尔模式在每个关键字之前使用一个+符号来执行查询#1。我可以通过退出+签名来执行包含#1和#2的查询,但是我不知道如何获得第2中描述的预期结果。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 11:11:45

对于#2,您只需要以下几个方面的组合:

代码语言:javascript
复制
WHERE MATCH(words) AGAINST('keyword1 keyword2 ... keywordN' IN BOOLEAN MODE)
AND NOT MATCH(words) AGAINST('+keyword1 +keyword2 ... +keywordN IN BOOLEAN MODE)

这将返回至少有一个关键字但不是全部的行。还是我误解了你的问题?

模式(MySQL v8.0)

代码语言:javascript
复制
create table test (
  id int not null auto_increment primary key,
  words text not null,
  FULLTEXT idx (words)
  );

  insert into test(words)
     values('Arc Book Cow Dog'), ('Book Cow Fox'), ('Arc Book Cow Fox'), ('Book Cow');

查询#1

代码语言:javascript
复制
SELECT *
FROM test
WHERE MATCH(words) AGAINST('Arc Fox' IN BOOLEAN MODE)
      AND NOT MATCH(words) AGAINST('+ARC +Fox' IN BOOLEAN MODE)
ORDER BY id;

| id  | words            |
| --- | ---------------- |
| 1   | Arc Book Cow Dog |
| 2   | Book Cow Fox     |

关于DB Fiddle的看法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60668741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档