mysql语句总结2

默认查询4个小时内的数据,还可以根据输入的时间段进行查询出时间最大的那条数据

<select id="queryPositionMechaincsInfo" parameterType="pd" resultType="pd">
    SELECT s.bs_id,s.bs_name,s.positionX,s.positionY,m.equ_state_id,m.equ_id,m.equ_name,m.equ_num,l.lab_num,lv.judge_res,r.rfid_ip,lv.trigger_date  FROM sys_mechanics_info  AS m
    LEFT JOIN t_aps_label_info AS l ON  l.user_id = m.equ_id
    LEFT JOIN t_aps_labelrecordview AS lv ON lv.label_num = l.lab_num
    LEFT JOIN t_aps_reader as r ON r.rfid_ip = lv.rfid_ip
    LEFT JOIN t_aps_base_station AS s ON r.pass_id = s.bs_id
    LEFT JOIN sys_mechanics_state AS ms ON ms.sta_id = m.equ_state_id
    <where>
        <choose>
        <when test=" null!=start_date and start_date !='' or null!=end_date and end_date !='' ">
        <!--根据输入的时间段来查询数据 -->
        <![CDATA[lv.trigger_date>=#{start_date} and lv.trigger_date<=#{end_date}]]>
        </when>
        <when test=" null!=equ_state_id and equ_state_id !='' or null!=equ_id and equ_id !=''">
        <!--当输入的时间段为空时,执行下面语句:及选出时间最大的那条数据 -->
         AND lv.trigger_date=(SELECT MAX(lv.trigger_date) FROM sys_mechanics_info  AS m LEFT JOIN t_aps_label_info AS l ON  l.user_id = m.equ_id LEFT JOIN t_aps_labelrecordview AS lv ON lv.label_num = l.lab_num
                LEFT JOIN t_aps_reader as r ON r.rfid_ip = lv.rfid_ip
                LEFT JOIN t_aps_base_station AS s ON r.pass_id = s.bs_id
                LEFT JOIN sys_mechanics_state AS ms ON ms.sta_id = m.equ_state_id
            WHERE 1=1
        <if test="null!=equ_id and equ_id !=''">
         and m.equ_id=#{equ_id}
        </if>
        <if test="null!=equ_state_id and equ_state_id !=''">
         AND m.equ_state_id=#{equ_state_id}
        </if>   
            )
        </when>
        <otherwise>
        <!-- 当输入的时间段为空时,默认查询4个小时内的那个时间最大的那条数据  -->
        <![CDATA[lv.trigger_date >DATE_SUB(NOW(),INTERVAL 4 HOUR) AND lv.trigger_date< NOW()]]>
        </otherwise>
        </choose>
        AND lv.judge_res=2
    </where>
    ORDER BY lv.trigger_date DESC
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值