select *
from test xx
where (? = '-' AND xx.xxx IN (select aa.XXXfrom AA aa))
OR
(?<> '-' AND xx.xxx IN
(SELECT xsdf FROM xxx WHERE ddd =
'pp' OR ddd= 'bbb')) ;
[size=medium][color=red][b]?表示传入的参数 比如传一个 100 就是 '100' = '-' 当传入的参数等于-时 执行 后面的语句 否则 不等-时执行第二个括号里面的语句[/b][/color][/size]
[b][color=blue]注意?不是属性名 而是具体的值 [/color][/b]