ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-09-30 19:32:50  阅读:168  来源: 互联网

标签:语句 必知 子句 mysql UNION 必会 prod ORDER SELECT


前言

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

正文

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

直接上例子。

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

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

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子句。

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 不支持,人还是务实一点,不学了,保存大脑容量。

标签:语句,必知,子句,mysql,UNION,必会,prod,ORDER,SELECT
来源: https://www.cnblogs.com/aoximin/p/15357929.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有