前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql 必知必会整理—组合查询与全文搜索[九]

mysql 必知必会整理—组合查询与全文搜索[九]

作者头像
用户4268038
修改2021-10-08 15:30:47
6590
修改2021-10-08 15:30:47
举报
文章被收录于专栏:stcnb

前言

简单整理一下组合查询与全文搜索。

正文

什么是组合查询,就是我们常说的交并补集。

直接上例子。

举一个例子,假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)。

当然,可以利用WHERE子句来完成此工作。

代码语言:javascript
复制
select vend_id,prod_id,prod_price
from products
where prod_price<=5
UNION
select vend_id,prod_id,prod_price
from products
where vend_id IN (1001,1002)

那么看一下union的规则:

  1. UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔
  2. UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。
  3. 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。

UNION从查询结果集中自动去除了重复的行(换句话说,它的行为与单条SELECT语句中使用多个WHERE子句条件一样)。

这是UNION的默认行为,但是如果需要,可以改变它。事实上,如果想返回所有匹配行,可使用UNION ALL而不是UNION。

SELECT语句的输出用ORDER BY子句排序。在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。

对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。

代码语言:javascript
复制
select vend_id,prod_id,prod_price
from products
where prod_price<=5
UNION
select vend_id,prod_id,prod_price
from products
where vend_id IN (1001,1002)
ORDER BY vend_id

这条UNION在最后一条SELECT语句后使用了ORDER BY子句。虽然ORDER BY子句似乎只是最后一条SELECT语句的组成部分,但实际上MySQL将用它来排序所有SELECT语句返回的所有结果。

下面介绍一下mysql 的全文搜索。

全文搜索限制InnoDB 不支持,人还是务实一点,不学了,保存大脑容量。

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档