一尘不染

复合键比较

sql

我有三个字段,它们在一个表上构成一个唯一的复合键。

我想传入索引匹配的3个不同的数组。

custIds= [0,1,2]
custLetters = [A,B,C]
products = ["Cheese","lemons","Aubergine"]

是否有一条sql语句将返回所有三行(假设它们存在),in由于“ false positives” ,仅通过via合并将不起作用:

select * from mytable 
where custId in (custIds)
 and custLetters in (custLetters)
and product in (products);

数据库oracle,但通过hibernatehql,所以如果可能的话,首选ansi吗?


阅读 134

收藏
2021-05-23

共1个答案

一尘不染

OT:您的SQL查询可能是错误的。它应该是:

select * from mytable 
where (custId, custLetters, product) 
in ( (0, 'A', 'Cheese'),
 (1, 'B', 'lemons'),
 (2, 'C', 'Aubergine'));

我不使用Hibernate是否可以生成这样的查询。但是,in这只是用于结合词和析取词的语法糖。

2021-05-23