我实际上需要将UNION
查询翻译为CASE..WHEN
,UNION
不支持HQL
。实际查询看起来像 -
select * from table1
JOIN table2 ON table1.a_version=table2.id --deciding JOIN
JOIN table3 ON table2.t2id=table3.id
JOIN table4 ON table3.t2id=table4.id
WHERE table2.col3='abc'
UNION
select * from table1
JOIN table2 ON table1.b_version=table2.id --deciding JOIN
UNION
select * from table1
JOIN table2 ON table1.c_version=table2.id --deciding JOIN
第一个JOIN
是决定性的,如果应该进一步加入。
我不想做本机SQL查询。我可以在这里CASE.. WHEN
来避免UNION
吗?
或者我可以这样做吗?
select * from table1
JOIN table2 ON ((table1.a_version=table2.id AND table2.col3='abc')
OR table1.b_version=table2.id
OR table1.b_version=table2.id)
JOIN table3 ON (table2.t2id=table3.id AND table1.a_version=table2.id)
JOIN table4 ON (table3.t2id=table4.id AND table1.a_version=table2.id)