组合查询



1.组合查询可以把多个查询的结果组合为一个数据集,而且通常比使用复杂条件
单查询更容易编写。另外,组合查询对于数据检索也具有更强的灵活性。

2.UNION:
 UNION操作符可以组合两个或多个SELECT语句的结果,不包含重复记录,在使用UNION
    时,每个SELECT语句里必须选择同样数量的字段,同样数量的字段表达式,同样的数据
 类型。
 
 基本语法:
  SELECT COLUMN1 {,COLUMN2}
  FROM TABLE1 [,TABLE2]
  [WHERE]
  UNION
  SELECT COLUMN1 [,COLUMN2]
  FROM TABLE1 [,TABLE2]
  [WHERE]
3.UNION ALL与UNION的唯一不同就是它能返回重复的结果。

4.INTERSECT:可以组合两个SELECT语句,但只返回第一个SELECT语句里与第二个SELECT
 语句里一样的记录,其使用规则与UNION操作符一样。
 
5.EXCEPT:组合两个SELECT语句,返回第一个SELECT语句里有但第二个SELECT语句里没有个记录

6.组合查询使用ORDER BY:
 ORDER BY可以用于组合查询,但它只能用于对全部查询结果的排序,因此组合查询包含
 多个SELECT语句,但只能有一个ORDER BY子句,且它只能以别名活数字来引用字段
  举例:下面的范例从EMPLOYEE_TBL和EMPLOYEE_PAY_TBL表中返回雇员ID,但是
  不显示重复记录,返回结果根据EMP_ID排序:
  SELECT EMP_ID FROM EMPLOYEE_TBL
  UNION
  SELECT EMP_ID FROM EMPLOYEE_PAY_TBL
  ORDER BY 1;
  
7.组合查询使用GROUP BY:
 与ORDER BY不同的是,GROUP BY子句可以用于组合查询里的每个SELECT语句
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis组合查询是指在一个SQL语句中同时查询多个表的数据,可以使用嵌套查询实现。具体步骤如下: 1. 配置多个表的映射文件,分别对应不同的实体类。 2. 在主映射文件中使用`<select>`标签定义SQL语句,使用`<resultMap>`标签定义结果集映射关系。 3. 在`<select>`标签中使用`<include>`标签引入其他映射文件中的SQL语句。 4. 在`<resultMap>`标签中使用`<association>`标签或`<collection>`标签定义关联关系。 下面是一个示例: 引用:假设有两个表,一个是用户表,一个是订单表,一个用户可以有多个订单,订单表中有一个`user_id`字段与用户表中的`id`字段关联。我们可以使用如下的SQL语句实现组合查询: ```xml <select id="getUserWithOrders" resultMap="userWithOrders"> SELECT * FROM user WHERE id = #{id} </select> <resultMap id="userWithOrders" type="User"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="password" column="password"/> <collection property="orders" ofType="Order"> <id property="id" column="id"/> <result property="orderNo" column="order_no"/> <result property="createTime" column="create_time"/> <result property="userId" column="user_id"/> </collection> </resultMap> ``` 在上面的示例中,我们定义了一个`getUserWithOrders`的SQL语句,使用`<include>`标签引入了订单表的查询语句。在`<resultMap>`标签中,我们使用了`<collection>`标签定义了用户与订单之间的一对多关系。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值