• SQL中 and or优先级问题


    资源来源:http://www.linuxidc.com/Linux/2012-03/56267.htm

    刚刚在项目中遇到这样一个问题,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 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!

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

    问题的解决办法是:

    用()来改变执行顺序!!!!

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

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

    这样就是完美的答案了!!!!

  • 相关阅读:
    《驱动学习 —— GPIO子系统和pinctl子系统》
    《驱动学习 —— input子系统》
    《视频相关名词了解》
    《网络编程 —— socket编程实例》
    uhci ohci ehci的区别
    phy的概念
    USB DEVICE
    gdb常用命令
    总线设备模型中注册
    module_i2c_driver
  • 原文地址:https://www.cnblogs.com/Dylanblogs/p/4208496.html
Copyright © 2020-2023  润新知