文章目录
😇MySQL的前情介绍
😇本章详情
😇组合查询
前言
- 在单个查询中从不同的表返回类似结构的数据;
- 对单个表执行多个查询,按单个查询返回数据。
组合查询和多个WHERE条件
😇创建组合查询
输入
SELECT vend_id,prod_id,prod_price FROM products
WHERE prod_price <= 5;
输出
输入
SELECT vend_id, prod_id, prod_price FROM products
WHERE vend_id IN (1001,1002);
输出
分析
输入
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);
输出
分析
SELECT vend_id, prod_id, prod_price FROM products
WHERE prod_price <= 5
OR vend_id IN (1001,1002);
😇UNION规则
- UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。
- UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。
- 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。
😇包含或取消重复的行
输入
SELECT vend_id, prod_id, prod_price FROM products
WHERE prod_price <= 5
UNION ALL
SELECT vend_id, prod_id, prod_price FROM products
WHERE vend_id IN (1001,1002);
输出
分析
UNION与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)
ORDER BY vend_id, prod_price;
输出
分析
组合不同的表