打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
项目遇到——not and or的优先级

刚刚在项目中遇到这样一个问题,SQL语句如下:

select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 and STATUS=3

我想要的结果的条件是:1. LIBRARY_ID=1 或者 LIB_ID=1

                                       2.STATUS=3

但是结果并非如此,出现了STATUS!=3的结果,但是却匹配了 LIBRARY_ID=1 or LIB_ID=1

为什么呢

原来这个SQL的执行是这样的:

select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 and STATUS=3

修改为:

select * from LOAN_BACK_LIBRARY where STATUS=3 and LIBRARY_ID=1 or LIB_ID=1依然不正确

呵呵,发现问题了:

where 后面如果有or的条件,则or自动会把左右的查询条件分开,原因就是:and的执行优先级最高!

关系型运算符优先级高到低为:not and or

问题的解决办法是:

用()来区分执行顺序!!!!

上面我所需要的SQL语句是这样的

select * from LOAN_BACK_LIBRARY whereSTATUS=3 and (LIBRARY_ID=1 orLIB_ID=1

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
动态库链接的优先级以及如何修改rpath
生存分析时间点问题
ECSHOP_-_修改首页或其他页面的商品展示数量
教你怎样用Oracle方便地查看报警日志错误
实战 | 如何用 Python 统计 Jira 数据并可视化
【先利其器】Z-lib备份计划(2022-11-04)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服