首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 组合查询及全文本搜索

MySQL 组合查询及全文本搜索

作者头像
小末快跑
发布2019-07-03 17:24:26
1.1K0
发布2019-07-03 17:24:26
举报
文章被收录于专栏:日常撸知识日常撸知识

一、组合查询(union)指执行多个查询并将结果作为单个查询结果集返回。

使用union的规则:1.两条或两条以上的select语句;2.每个select语句必须包含相同的列,表达式或聚集函数;3.这些列可以以不同的次序出现;4.列的数据必须兼容。

SELECT vend_id,prod_id,prod_price from products where prod_price<=5

UNION

SELECT vend_id,prod_id,prod_price from products where prod_id in (1001,1002);

UNION 会自动去除掉重复的行。如果使用UNION ALL则不会去除掉重复的行;若需要排序,只需要在最后一条语句加上order by即可。

二、全文本搜索MySQL最常用的两个引擎,MyISAM和InnoDB,其中MyISAM支持全文本搜索,InnoDB不支持全文本搜索。全文本搜索相对于like和_通配符以及正则匹配有三大优势:性能,明确控制,智能化结果。

全文本语句表达式如下,使用Match()指定被搜索的列,使用Against()指定要使用的搜索表达式。搜索时不区分大小写。

SELECT note_text FROM productnotes WHERE Match(note_text) Against('rabbit');

全文本搜索一个重要的部分就是对结果进行排序,具有较高等级的先返回。

SELECT note_text,Match(note_text) Against('rabbit') as rank_1 FROM productnotes;

三、布尔全文本搜索可以提供关于细节:要匹配的词;要排斥的词;排列提示(指定某些词比其他词更重要);表达式分组等。

操作符如图:

以下语句匹配包含heavy但不包任意以rope开始的词的行:

SELECT note_text FROM productnotes where Match(note_text) Against ('heavy -rope' IN BOOLEAN MODE);

全文本搜的说明:

  1. 短词(3个或3个一下字符的词)被搜索忽略;
  2. 如果一个词出现在50%的行中,则将他作为一个非用词忽略;
  3. 对于少于3行的表将不会返回结果;
  4. 忽略单词中的单引号(don't变为dont);
  5. 仅在MyISAM数据库引擎中支持全文本搜索。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小末快跑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档