Я хотел бы написать скрипт SQL, подобный этому:
select count(*) from table1 t1 where exists (
select t2.desired_col from table2 t2 where t1.ID = t2.reference_t1_id
intersect
(2, 5, 9, 10)
);
Цель состоит в том, чтобы сказать мне, сколько записей в t1
имеют хотя бы одно общее значение между desired_col
из t2
и данной коллекцией (т.е. (2, 5, 9, 10)
). t2
имеет отношение ManyToOne к t1
. Тем не менее, кажется, я не могу пересекать между select
и простой коллекцией. В качестве обходного пути я обернул данную коллекцию так:
select count(*) from table1 t1 where exists (
select t2.desired_col from table2 t2 where t1.ID = t2.reference_t1_id
intersect
select desired_col from table t2 where desired_col in (2, 5, 9, 10)
);
Я думаю, что это решение выглядит несколько уродливо, и мне было интересно, есть ли лучший способ найти пересечение между оператором select
и простой коллекцией.