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')) ;
?表示传入的参数 比如传一个 100 就是 '100' = '-' 当传入的参数等于-时 执行 后面的语句 否则 不等-时执行第二个括号里面的语句
注意?不是属性名 而是具体的值