Kih*_*ats 3 java mysql querydsl spring-data
我正在使用QueryDsl SQL并且我想要left join一个子查询。这是简单的查询SQL
SELECT
usr.memberId,
payoutsBbf.totalPyts
FROM
users usr
LEFT JOIN
(SELECT
pyt.member_id AS mmb_id,
SUM(pyt.amount) AS totalPyts
FROM
payout pyt
WHERE
pyt.payoutPeriod < '2018-01-01'
GROUP BY pyt.member_id) AS payoutsBbf ON usr.id = payoutsBbf.mmb_id
Run Code Online (Sandbox Code Playgroud)
我希望将其写入QueryDsl SQL,并且将子查询保留到主表中几乎很重要,users因为这只是整个复杂查询的一个片段。
我该如何处理该LEFT JOIN x ON部分
如何处理部分中的子查询SELECT payoutBbf.totalPyts别名
我就是这样做的:
final StringPath payoutsBbf = stringPath("payoutsBbf");
final String mmbId = "mmb_id";
final String totalPyts = "totalPyts";
sqlQueryFactory.select(users.memberId, stringPath(payoutsBbf, totalPyts))
.from(users).leftJoin(
sqlQueryFactory.select(payout.member_id.as(mmbId), member_id.amount.sum().as(totalPyts))
.from(payout).where(payout.payoutPeriod.lt("2018-01-01")).groupBy(payout.member_id),
payoutsBbf
).on(users.id.eq(stringPath(payoutsBbf, mmbId))).fetch();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10271 次 |
| 最近记录: |