1.8.2 QueryWrapper的toSQL打印错误, 参数没有对齐
wjingyao2008 opened this issue · comments
wjingyao2008 commented
测试表
CREATE TABLE `order_test` (
`store_id` int(11) DEFAULT NULL,
`member_id` int(11) DEFAULT NULL,
`amount` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
final QueryWrapper query = QueryWrapper.create();
final QueryColumn storeColumn = column("temp", "store_id");
query.select(
count(distinct(case_()
.when(string("purchasePerson").gt(1)).then(1)
.else_(0).end())).as("repurchasePerson")
).from(
select(ORDER_TEST.STORE_ID,
ORDER_TEST.MEMBER_ID,
sum(ORDER_TEST.AMOUNT).as("purchasePerson")
).from(ORDER_TEST)
.where(ORDER_TEST.STORE_ID.in(5))
.groupBy(ORDER_TEST.STORE_ID,
ORDER_TEST.MEMBER_ID)).as("temp")
.groupBy(storeColumn);
query.toSQL 得到的结果参数错误
本来应该是'purchasePerson' > 1, 结果是'purchasePerson' > 5, 5这个参数应该在后面store_id
IN (?) 里
wjingyao2008 commented
toSQL()打印出的错误sql是, 可能也影响最后sql的执行
SELECT COUNT(DISTINCT CASE WHEN 'purchasePerson' > 5 THEN 1 ELSE 0 END) AS
repurchasePersonFROM (SELECT
store_id,
member_id, SUM(
amount) AS
purchasePersonFROM
order_testWHERE
store_idIN (?) GROUP BY
store_id,
member_id) AS
tempGROUP BY
temp.
store_id``