情况就是这样:
一个表要以其中2个字段为条件,其中一个是必须的,另一个可能有可能没有。
例如:
有的话:
select * from A a where a.field1 in (....) and a.field2 in(....)
否则:
select * from A a where a.field1 in (....)
现在我有一堆数据作为查询条件,其中有的有field2有的没有,我要把它们都查出来,这个怎么搞?请教各位

解决方案 »

  1.   

    贴记录及要求结果出来看看,用两个SQL UNION不行?
      

  2.   

    要求就是说有一些个人信息条件被传给sql,其中每个条件都有几种类型。如果条件数据里存在类型的数据,那就要把符合条件及类型的查出来,否则就把符合条件及这个条件的所有类型的查出来。由于我用hibernate,现在不支持union,所以没想到比较好的方法
      

  3.   

    select * from A a where a.field1 in (....) and (a.field2 in(....) or a.field2 is null)
      

  4.   


    我觉得不对SQL codeselect * from A a where (a.field1 in (....) and a.field2 in(....)) or (a.field1 in (....) and a.field2 is null)似乎能满足我的要求。。
      

  5.   

    还是不对,不同的field1的field2也是不一样的。。
      

  6.   

    select * from A a where (a.field1 in (....) and a.field2 is null) or (a.field1 =? and a.field2 in(....))  or (a.field1 =? and a.field2 in(....))  or (a.field1 =? and a.field2 in(....)) .........似乎只能这么做了,不过听说用or多了效率比较低。。
      

  7.   

    a.field1 =? and a.field2 in(....)如果是固定搭配,建议专门用一张表来表示这个关系。这样可以简单你的SQL语句了。