子句总结

组合查询
组合查询是指利用UNION,将多条SELECT查询语句组合在一起,并将结果作为单个结果集返回。
它可以简化复杂的WHERE子句、多表查询工作,有以下要求或特性:
- 每个查询必须包含相同的列、表达式或聚集函数(各个列的列出次序可以不同)
- 返回结果为每个查询的
WHERE子句过滤后的或集,并且和单条SELECT语句一样,去除了重复的行 ORDER BY排序子句只能放在最后一条查询语句之后,它将对整个结果集排序
select vend_id, prod_id, prod_price
from products
where prod_price <= 10
union [all] //all表示包含重复的行
select vend_id, prod_id, prod_price
from products
where vend_id in (100, 200)
order by vend_id, prod_price;
全文本搜索
全文本搜索具有性能上更快、查询结果能明确控制、查询结果智能化等优点,它返回以文本匹配的良好程度排序的数据。
MyISAM引擎支持全文本搜索。
在建表时使用FULLTEXT(列名)索引单个列或多个列,之后MySQL将自动维护该索引。在增删改时,索引随之自动更新。
也可以在建表后指定索引,这种情况下所有已有数据必须立即索引。
select column1
from table_name
where match(column2) against('test');
传递给MATCH()的值必须与FULLTEXT定义中的相同。
如果指定了多个列,必须以相同的次序传递它们。
查询扩展
查询扩展对数据和索引进行两遍扫描来完成搜索。
返回结果不仅包含指定的词,还包含可能 “有用” 的词。
select column1
from table_name
where match(column2) against('test' with query expansion);
布尔文本搜索
即使没有FULLTEXT索引也可以使用布尔方式,但这样非常缓慢。
布尔方式允许查询语句中提供如下细节:
- 要匹配的词
- 要排斥的词
- 排列提示(词的等级值)
- 表达式分组
- 其他
布尔操作符
| 操作符 | 说明 |
|---|---|
+ | 包含,词必须存在 |
- | 排除,词必须不出现 |
> | 包含,而且增加等级值 |
< | 包含,而且减少等级值 |
() | 把词组成子表达式 |
~ | 取消一个词的排序值 |
* | 词尾的通配符 |
"" | 定义一个短语 |
//匹配test和down,增加前者的等级,降低后者的等级
select column1
from table_name
where match(column2) against('>test <down' in boolean mode);
本文介绍SQL中的组合查询技术,包括使用UNION合并多条SELECT语句的方法及其注意事项。此外,还详细讲解了全文本搜索的功能及实现方式,如使用FULLTEXT索引和MATCH AGAINST语法进行高效查询。

被折叠的 条评论
为什么被折叠?



