用户输入多个输入时获取特定列的Oracle查询

时间:2016-07-14 16:17:49

标签: sql oracle jpa

我有这样的情况我有一张桌子说A。

    ID sid RE
    -- --- --
     1 123 BE
     2 123 BE
     2 234 FR
     3 123 BE
     3 156 LU
     3 184 FR

如果用户提供sid = 123 and RE = 'BE'作为输入,我只需要将id设为1.如果用户提供sid = 123 and RE = 'BE' and sid 234而RE FR我只需要提供2。

我已经构建了像这样的oracle查询

    select   min(id)as id, sid, re
    from     a
    where    sid = 123 and re = 'be'
    group by sid, re
    ;

对于只有一个SID = 123和RE = BE作为输入,它工作正常。但是如果用户通过123 BE,234 FR如何将其传递给上面的查询并且只获得2作为输出?

我想将此查询转换为JPQL并传递sid和re的列表。这是我的意图

1 个答案:

答案 0 :(得分:0)

SELECT MAX(t.ID)
FROM
(
    SELECT ID, sid, RE
    FROM a
    WHERE (sid = 123 AND RE = 'BE') OR (sid = 234 AND RE = 'FR')
) t

注意:我认为您打算在OR子句中WHERE一起使用您的条件,因为记录不能同时具有两个不同的sid值。