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