关于mysql的and和or

写了一个查询语句结果踩坑了,这个and和or分不清楚谁的优先级高

在页面上看到了已经被删除的数据,我就知道糟了。话不读说直接看代码

<select id="listByUsPage" resultType="com.wuling.product.domain.TaskInfo">
        select * from
        (
        select * from project_task_info pti
        <where>
            pti.valid_status = 1 and ( pti.collaborator_code = #{userCode} or pti.assign_code = #{userCode})
        </where>
        ) tab ${ew.customSqlSegment}
    </select>

这里是优化之后的,之前没有在 or 的两个变量周边放上括号自然就没有办法区别开。

如果没有在or的变量旁边加上括号,那它这里的意思就是查询生效状态等于1并且协作人编码=XXX或者指派人为XXX了

 

posted @ 2023-04-06 10:06  嘿咻噜啦啦  阅读(45)  评论(0)    收藏  举报