组合查询

1、大多数的SQL查询只包含从一个或多个表中返回数据的单条SELECT语句,但是,SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并或复合查询。

主要有两种情况需要使用组合查询:

(1)在一个查询中从不同的表返回结构数据

(2)对一个执行多个查询,按一个查询返回数据

2、使用UNION

使用UNION很简单,所要做的只是给出每条SELECT语句,然后再每条SELECT语句之间加上UNION关键字,这样所给出的SELECT结果集就能组合成一个结果集并返回。

例如:

我们首先先用WHRE分开查询(没有除去重复的行)

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);

接着我们用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);

但实际上我们也可以用多条WHERE来实现相同的查询:

SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price<=5
OR
vend_id IN (1001,1002);

通过和上面没有使用UNION关键的分开查询相比,我们发现UNION(组合查询)从结果集中去除了重复的行。

这里我们可以使用UNION ALL,告诉DBMS不取消重复的行。那么效果就和上面没加UNION的一样。

3、使用UNION必须知道的规则(使用注意事项)

(1)使用UNION必须有两条或者两条以上的SELECT语句组成,语句之间用UNION关键字分割

(2)使用UNION关联的每个子查询必须包含相同的检索列、表达式或这聚集函数(次序可以不一样)

(3)列数据类型必须兼容;类型不必完全相同,但必须是DBMS可以隐含转换的类型(不同的数值类型或者不同的日期类型)

(4)UNION几乎总是完成与多个WHERE条件相同的工作,UNION ALL是UNION的一种形式,它完成WHERE子句完成不了的工作,因为他将返回每个条件的匹配行(包括重复行)

(5)使用组合查询,当需要对结果进行排序是,只能指定一条ORDER BY语句,这条语句只能放在最后一天SELECT语句的后面。对于结果集,不存在用一种方式排序一部分,而用另一种方式排序另一部分的情况,所以不允许使用多条ORDER BY子句。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金州饿霸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值