最近在写sql语句中要使用or这个关键字,
使用场景是:
当字段x满足条件a 或 字段y满足条件b时,
把条件成立的记录列出来,
即当前后条件同时成立时,则把前后条件成立的所有记录列出来。
而我纠结的点在于
当"前条件成立"时,后条件也成立时,
程序会不会因为前条件成立之后,后条件就不再执行了,从而只会显示前条件成立的记录。
(因为在java代码中的运算符 || 就是这么执行的)
在网上简单查了下相关资料,并没能找到很确切的答案,在一个和我的问题很相似的悬赏问答中,下面的回答五花八门,总体分为两种,一种是:前条件满足之后,后条件就不会再执行了,一种是,当前后条件同时成立时,满足前后条件成立的所有记录都会被列出来,本来我是倾向于第二点的,当由于有了争议,最终我还是决定动手自己实践下,这样更靠谱,实践出真知嘛。
利用已有的现成表,将字段dealer_code的第一条记录设置为0,将create_by_user_id的第二条记录设置为1。
执行语句
结果
两条记录都显示出来了
所以结论:当前后条件同时成立时,则满足前后条件成立的所有记录均会列出来。
顺便拓展了下关于AND,OR,NOT的执行顺序,
关系型运算符优先级高到低为:NOT >AND >OR
网友评论