jeecg项目sql语句积累

1.多表联表查询

select a.device_code,a.device_name,a.done_person,a.task_code,a.child_code,b.compoInvCode from

  (SELECT
  a.device_code,a.device_name,a.done_person,a.task_code,b.child_code
  FROM
  gx_device a
  JOIN gx_device_detail b ON a.device_code =
  b.device_code) a

join xf_component_invcode b on a.child_code = b.compoNumber

核心思想:两个表的联立,用join加上连接条件就行。如果三个表连接,就先把两个表连接起来,把连接起来的结果用括号括起来当一个整体,再连接第三个表,就回到了两个表连接的情况,这种把结果当一个整体的表的方法可以解决任意多个表的连接问题。

2.distinct 加在select之后,可去重复

 

3.limit + 数字   放在最后,可只读取数字相应的行 比如 limit 10 读取前10行

 

4.and 的优先级比or的优先级高,在给条件时要注意

 

5.left join 取到等值条件后会加入左边表的不满足等值条件的部分,right join 取到等值条件后会加入右边表的不满足等值条件的部分,inner join 只取到满足等值条件的部分。

 

6.动态sql语句,常见情况:多条件查询,给定越多的条件,查询越精确。 

如:

<select id="passDeviceInfoToQuery" parameterType="java.lang.String"
        resultType="org.jeecg.modules.stasticsandquery.entity.DeviceInfo"

        SELECT distinct
        a.device_code,b.material_code,b.material_name,a.own_order,b.order_status
        as
        'taskStatus' FROM
        gx_device_main a
        JOIN xf_task_order b
        ON
        a.material_code =
        b.material_code
        <where>
            <if test="deviceCode != null and deviceCode != ''">
                a.device_code = #{deviceCode}
            </if>
            <if test="material != null and material != ''">
                AND (b.material_code = #{material} or b.material_name =
                #{material})
            </if>
            <if test="taskStatus != null and taskStatus != ''">
                and b.order_status = #{taskStatus}
            </if>
            <if test="ownOrder != null and ownOrder != ''">
                and a.own_order = #{ownOrder}
            </if>
        </where>
    </select>

 

<if test="deviceCode != null and deviceCode != ''">

 a.device_code = #{deviceCode}

</if>

<if test=""> if标签做条件判断

<where> 标签可去掉多出来的and关键字

 

7.order by + 字段名 排序 默认按asc升序排序,指定desc时按降序排序。

 

 

上一篇:1598. 两句话中的不常见单词


下一篇:贪心算法之集合覆盖问题详解