我有一個與表左連接的 SQL 陳述句:
select a.id, b.col1 from tableA a
left join (select col1 from tableB where date = 'xxx') b on a.id = b.id
對于某些應用程式約束(我需要使用不允許子查詢的 Spring JPQL 查詢),我需要“展平”這個查詢以洗掉子查詢而不改變查詢的含義:我想用 tableB 的子集來豐富 tableA。
我嘗試了一些查詢,例如:
select a.id, b.col1 from tableA a
left join tableB b on a.id = b.id
where (date = 'xxx' or date is null)
但這給了我與之前查詢不同的答案。
如何洗掉此子查詢?
uj5u.com熱心網友回復:
它可以通過多種不同的方式完成 - 使用 cte,使用連接
使用 join 它可以實作為 -
select a.id, b.col1 from tableA a left join tableB b on a.id = b.id and b.date = 'xxx'
使用 CTE 它可以實作為 -
with t as
(
select col1, id from tableB where date = 'xxx'
)
select a.id, b.col1 from tableA a
left join t on a.id = t.id
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448575.html
