请问IF语句能不能放在where里面IF((APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),APPROVAL_CLASS not in ('07','11'),APPROVAL_CLASS in ('07','11'))) 
感觉是不能,但是类似的功能如何实现啊?

解决方案 »

  1.   

    应该可以
    select * from tt where 
    IF((APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),为T的条件,F的条件)
      

  2.   

    OR
    用CASE WHEN
    SELECT * FROM TT 
    WHERE CASE APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1' WHEN T 条件
    WHEN F条件 END
      

  3.   

    APPROVAL_CLASS  APPROVAL_FLG
    11/7               0/1
    一共有4种情况,但是最多以class分,取出2条,flg不一定。
    就是当(11,1)的时候什么也不取,除此之外或者是
    (11,0)(7,0/1)或者是(7,0/1)或者是NULL能办到吗?
      

  4.   

    if((11,1),if((11,0),iif((7,0/1),if((7,0/1),if((null)))))
    大概是这样,自己试试吧,用CASE WHEN也可以
      

  5.   

    请问IF语句能不能放在where里面 当然可以[align=center]====  ====
    [/align]
      

  6.   

    IF((APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),APPROVAL_CLASS not in ('07','11'),APPROVAL_CLASS in ('07','11'))) 你的SQL语句连括号都匹配不齐。[align=center]====  ====
    [/align]
      

  7.   

    IF(
    (APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),
    APPROVAL_CLASS not in ('07','11'),
    APPROVAL_CLASS in ('07','11')
    )) 你的语句中 IN 不是函数,所以会有问题。[align=center]====  ====
    [/align]
      

  8.   

    实现 的方法一:IF(
    (APPROVAL_CLASS = '11' AND APPROVAL_FLG = '1'),
    INSTR('07,11,', CONCAT(APPROVAL_CLASS,','))=0,
    INSTR('07,11,', CONCAT(APPROVAL_CLASS,','))>0
    )[align=center]====  ====
    [/align]
      

  9.   

    实现 的方法二:
    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]
      

  10.   

    实现 的方法三:
    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]
      

  11.   

    其他数据库中不知道,在MYSQL不能这样干。你可以把IF函数的结构赋给一个临时变量。然后WHERE.
      

  12.   

    感觉MY SQL的SQL 语句功能太弱,TOP、在WHERE中不支持IIF等等
      

  13.   


    [align=center]====  ====
    [/align]
      

  14.   


    [align=center]====  ====
    [/align]
      

  15.   

    问题已经解决了。
    从新理解业务的基础上,发现原有的SQL语句有很大的问题。
    虽然提的这个问题已经用不上了,但是学到了很多东西。
    非常感谢大家。
    所以决定不分对错,按照大致的字节数比例发分。
      

  16.   

    [align=center]====  ====
    [/align]
      

  17.   

    [align=center]====  ====
    [/align]
      

  18.   

    liuyann : 145
    wwwwb   :  45
    yueliangdao0608  : 10多谢了