我是靠谱客的博主 微笑银耳汤,最近开发中收集的这篇文章主要介绍SQL语句where子句同时包含and和or/left join多个表的情况当sql语句中where子句同时包含and和or,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当sql语句中where子句同时包含and和or

例子所用表如下:

dep表:

在这里插入图片描述

emp表:

在这里插入图片描述

salary表:

在这里插入图片描述
今天笔试的时候被一个两次left join的sql语句难倒了我,所以通过例子来验证一下,然后又发现where子句中同时and和or的情况,所以来此宝地记录总结一下。

测试用sql语句:

SELECT * from 
(SELECT e.ename,d.dname,s.salary from emp2 e LEFT JOIN dep d on e.did = d.did 
LEFT JOIN salary s on e.eid = s.eid) t4
WHERE t4.ename='李三' OR t4.dname='第三部' and t4.salary>8000 ;

首先看一下两个left join的查询结果:

在这里插入图片描述

此时WHERE t4.ename=‘李三’ OR t4.dname=‘第三部’ and t4.salary>8000 ; 运行整个sql语句的查询结果:

在这里插入图片描述
结果即为查询dname='第三部’且salary>8000的记录 或者姓名为’李三’的记录;

当把where子句改成

SELECT * from 
(SELECT e.ename,d.dname,s.salary from emp2 e LEFT JOIN dep d on e.did = d.did 
LEFT JOIN salary s on e.eid = s.eid) t4
WHERE (t4.ename='李三' OR t4.dname='第三部') and t4.salary>8000 ;

在这里插入图片描述
即为(ename='李三’且salary>8000) 或者 (dname='第三部且salary>8000)

可见,当 where t4.ename=‘李三’ or t4.dname=‘第三部’ and t4.salary>8000 时 and比or优先,先进行and逻辑运算。

文章排版比较乱,例子也有点复杂,见谅…
本文仅为个人记录总结所用,如有错误/侵犯,感谢指出/联系我删除。

最后

以上就是微笑银耳汤为你收集整理的SQL语句where子句同时包含and和or/left join多个表的情况当sql语句中where子句同时包含and和or的全部内容,希望文章能够帮你解决SQL语句where子句同时包含and和or/left join多个表的情况当sql语句中where子句同时包含and和or所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部