sql语句-关联查询-个别字段判断

记录一下我自己常用的关联方法

1、内连接(INNER JOIN

      ① 等值连接:

ON A.id = B.id
      ② 不等值连接:ON A.id > B.id
      ③ 自连接:SELECT * FROM A a1 INNER JOIN A a2 ON a1.id = a2.sid


      注:多表中同时符合某种条件的数据记录的集合

2、外连接(LEFT JOIN(左外连接) 和 RIGHT JOIN(右外连接)

  • 以左表为主,先查询出左表,按照 ON 后的关联条件匹配右表,没有匹配到的用 NULL 填充

3、联合查询(UNION 和 UNION ALL)

  • 例:

        SELECT (查询条件)
        FROM 表名(主表)
        INNER JOIN (关联表名)
        ON (关联字段)     例:c.record_id=r.record_id
        LEFT JOIN (关联表名)
        ON (关联字段)


<where>
    <trim prefixOverrides = "and">    //prefixOverrides 将前缀and的去掉
        <if test="agentCode != null">
            c.agent_code like concat('%',#{agentCode},'%')    //agentCode 模糊查询
        </if>
        <if test="agentCodes !=null">
            and  c.agent_code in
            <foreach collection="agentCodes" item="item"  open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
        <if test="number != null and number !=''">
            AND number like concat('%',#{number},'%')
        </if>
        <if test="result != null and result !=''">
            AND result = #{result}
        </if>
        <if test="startTime !=null and expirationTime != null">
            and r.date between #{startTime} and #{expirationTime}  //如果开始时间和结束时间都不为空,data在这个范围之内
        </if>
        <if test="startTime != null and expirationTime == null">
            and r.date >= #{startTime}
        </if>
        <if test="startDate !=null and endDate != null">
            and r.make_date between #{startDate} and #{endDate}
        </if>
        <if test="startDate !=null and endDate == null">
            and r.make_date >= #{startDate}
        </if>
    </trim>
</where>
ORDER BY r.make_date DESC    //通过make_date实现降序排列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小庞同学~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值