请问IF语句能不能放在where里面IF((APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),APPROVAL_CLASS not in ('07','11'),APPROVAL_CLASS in ('07','11')))
感觉是不能,但是类似的功能如何实现啊?
感觉是不能,但是类似的功能如何实现啊?
解决方案 »
- 主从同步的问题
- postgresql 远程连接的命令?
- [Err] 1064 - You have an error in your SQL syntax
- mysql中如何删除数组中的重复数据
- 自己的计算机上装了MYSQL数据库, 可是别的计算机上的应用程序怎样访问我的MYSQL数据库?
- 一个 NOT IN的问题
- apache和tomcat整合过程中出现的问题
- Who can help me ???
- MySQL5.5 数据库出现1067错误 ,棘手问题,帮帮忙呀,我没见过这种问题。。。要晕了
- 想问各位大大 MySQL 是怎么做高可用的?
- 在mysql命令行操作时,如何能让查询结果显示不错位呀.(当列数较多时,一行记录会折行显示,就会错位了,),能实现一条记录不折行显示吗?
- mysql如何计算日期加减天数,再得到日期,急!!!
select * from tt where
IF((APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),为T的条件,F的条件)
用CASE WHEN
SELECT * FROM TT
WHERE CASE APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1' WHEN T 条件
WHEN F条件 END
11/7 0/1
一共有4种情况,但是最多以class分,取出2条,flg不一定。
就是当(11,1)的时候什么也不取,除此之外或者是
(11,0)(7,0/1)或者是(7,0/1)或者是NULL能办到吗?
大概是这样,自己试试吧,用CASE WHEN也可以
[/align]
[/align]
(APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),
APPROVAL_CLASS not in ('07','11'),
APPROVAL_CLASS in ('07','11')
)) 你的语句中 IN 不是函数,所以会有问题。[align=center]==== 思想重于技巧 ====
[/align]
(APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),
INSTR('07,11,', CONCAT(APPROVAL_CLASS,','))=0,
INSTR('07,11,', CONCAT(APPROVAL_CLASS,','))>0
)[align=center]==== 思想重于技巧 ====
[/align]
IF(
(APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),
(APPROVAL_CLASS<>'07' AND APPROVAL_CLASS<>'11'),
(APPROVAL_CLASS='07' OR APPROVAL_CLASS='11')
)[align=center]==== 思想重于技巧 ====
[/align]
where
(APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1') AND (APPROVAL_CLASS<>'07' AND APPROVAL_CLASS<>'11')
OR
(APPROVAL_CLASS <> '11' OR APPROVAL_FLG <> '1') AND (APPROVAL_CLASS='07' OR APPROVAL_CLASS='11')[align=center]==== 思想重于技巧 ====
[/align]
[align=center]==== 思想重于技巧 ====
[/align]
[align=center]==== 思想重于技巧 ====
[/align]
从新理解业务的基础上,发现原有的SQL语句有很大的问题。
虽然提的这个问题已经用不上了,但是学到了很多东西。
非常感谢大家。
所以决定不分对错,按照大致的字节数比例发分。
[/align]
[/align]
wwwwb : 45
yueliangdao0608 : 10多谢了