博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL使用case when 动态的修改where条件
阅读量:6160 次
发布时间:2019-06-21

本文共 1060 字,大约阅读时间需要 3 分钟。

hot3.png

原SQL: 

SELECT	loan.*, loan_phase.plannedTermAmountFROM	loanLEFT JOIN loan_phase ON loan_phase.loanId = loan.loanIdWHEREloan_phase.phaseNumber = loan.repayedTermCount + 1AND 	loan.borrowerId = 100588AND (	loan. STATUS = 500	OR loan. STATUS = 550	OR loan. STATUS = 520)ORDER BY	loan.createTime DESC

 上面sql不满足条件,要求如果status=520,那么就要忽略where条件:loan_phase.phaseNumber = loan.repayedTermCount + 1

解决办法1:

SELECT	loan.*, loan_phase.plannedTermAmountFROM	loanLEFT JOIN loan_phase ON loan_phase.loanId = loan.loanIdWHERE(CASE loan.status when 520 then 1=1 else 'loan_phase.phaseNumber=loan.repayedTermCount+1' end)AND 	loan.borrowerId = 100588AND (	loan. STATUS = 500	OR loan. STATUS = 550	OR loan. STATUS = 520)ORDER BY	loan.createTime DESC

或者:

LEFT JOIN loan_phase ON loan_phase.loanId = loan.loanIdWHERE(CASE loan.status when 520 then 1 else loan_phase.phaseNumber-loan.repayedTermCount end  )=1AND 	loan.borrowerId = 100588AND (	loan. STATUS = 500	OR loan. STATUS = 550	OR loan. STATUS = 520)ORDER BY	loan.createTime DESC

 

转载于:https://my.oschina.net/iyinghui/blog/1839564

你可能感兴趣的文章
文件特殊权限及facl
查看>>
我的友情链接
查看>>
Android按两次返回键退出应用
查看>>
第一章:认识Redhat Linux
查看>>
文本查看指令
查看>>
我的友情链接
查看>>
android开源项目框架大全:《IT蓝豹》
查看>>
[vue.js]Invalid options in vue.config.js: "publicPath" is not allowed
查看>>
CA证书
查看>>
DBA基础系列SQL Server 2014:2. SQL Server用户数据库初始化配置
查看>>
spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring
查看>>
5、vsphere6-ESXI主机的安装及配置
查看>>
JavaWeb监听器
查看>>
Linux Shell特殊字符和控制字符
查看>>
我的友情链接
查看>>
如何做地图标注
查看>>
生产环境该如何选择lvs的工作模式,和哪一种算法
查看>>
iOS 正则表达式判断UITextField是否为全汉字,全字母,全数字,数字和字母
查看>>
NHibernate初探-SQLDialects
查看>>
ElasticSearch之动态映射和模板
查看>>