组合查询
之前学习使用的查询,都是串行执行,返回单个结果,
组合查询
组合查询能够实现通过UNION 子句将两个查询语句并行执行,并最终在一张结果列表中输出;
如何创建组合查询
在多个查询语句之间使用UNION 子句进行连接;
举例说明
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使用的规则
在进行组合查询时有几条规则需要注意。
UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。
UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过分析各个列不需要以相同的次序列出)。
列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。
如果遵守了这些基本规则或限制,则可以将组合查询用于任何数据检索任务。
包含或取消重复的行
从上面截图中可以看到输出的结果是没有包涵重复的行的;
那如果需要输出所有的行,就需要使用UNION ALL进行匹配;
由下图使用UNION 和UNION ALL 可以看到,输出的结果中包涵了重复的行;
对组合查询结果排序
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;