MySQL基于两个不同的列进行选择

时间:2020-05-20 07:18:29

标签: mysql hibernate

我有一个表(来自联接,因此没有自然的PK),其中有两个独立的列:

A    B
------
1    a
1    b
1    c
2    a
2    b

在Java中,我有一个包含两个值的元素数组,例如(1,b)和(2,a)。

如何选择所有相关值?

当然,我可以通过两个不同的选择来做到这一点:

SELECT * FROM my_table WHERE A = 1 and B = b;
SELECT * FROM my_table WHERE A = 2 and B = a;

在休眠状态下将是:

SELECT * FROM my_table WHERE A = :a and B = :b

然后我将对所有输入重复查询。

当然,我不能这样做:

SELECT * FROM my_table where A in (1, 2) and B in (a, b)

因为它将返回4列。

是否可以使用不依赖于输入的Java和Hibernate在仅一个参数查询中进行查询?

我将收到一个长数组,因此不能编写N个查询,也不能手动编写依赖于输入的查询。

例如,如果我对一列感兴趣,则休眠状态下的查询将是:

SELECT * from my_table where A in (:my_array)

PS。 在Postgres中,这可以通过jsonb_to_recordset来实现,它可以将元素数组转换成一个表,每个元素一行,然后与my_table联接,它将只有1个参数,即数组。 / p>

1 个答案:

答案 0 :(得分:0)

使用简单的SQL查询是可能的:

SELECT * FROM my_table WHERE (A = 1 AND B = b) OR (A = 2 AND B = a);