我想将以下查询转换/翻译为IN
子句中的多个列到JPA
。
查询:
SELECT city FROM user WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));
答案 0 :(得分:2)
我不知道JPA是什么(我可以谷歌它;我的意思是我不熟悉它);但是:如果有任何希望处理SQL查询,唯一的问题是在元组上转换条件,那么重写查询,如下所示:
select city
from user
where firstname = 'a' and lastname = 'b'
or firstname = 'c' and lastname = 'd'
;
这是查询引擎无论如何都会对原始查询执行的操作;你可以看一下EXPLAIN PLAN来说服自己。
有些人喜欢在每对AND
连接条件周围加上括号;我不会比2 * 3 + 4 * 6使用括号更多,但如果你觉得它们增加了清晰度,你可以添加它们。
答案 1 :(得分:1)
你可以使用某种子查询,我认为它比一组明确定义的对更相关(对于更复杂的情况,你也可以用or
语句堆叠):
SELECT city
FROM user
WHERE (firstName, lastName) IN (
select stringOne, stringTwo from TableOne t ...
)
or
(firstName, lastName) IN (
select stringOne, stringTwo from TableTwo t ...
)