在 knexjs mysql 中取联合多列后总和不起作用
Posted
技术标签:
【中文标题】在 knexjs mysql 中取联合多列后总和不起作用【英文标题】:sum is not working after taking union multiple column in knexjs mysql 【发布时间】:2018-10-26 18:15:40 【问题描述】:我需要 4 列的总和,我这样做是先取 union 然后运行 sum
db.select("gen-acute-sales-before-returns").table('sales')
.union(function()
this.select("gen-acute-sales-after-returns").table('sales')
)
.union(function()
this.select("gen-chronic-sales-before-returns").table('sales')
)
.union(function()
this.select("gen-chronic-sales-after-returns").table('sales')
)
.sum(totalSales:"gen-acute-sales-before-returns")
.then(result => res.json(result))
问题是我得到了一个联合表,但 sum 不起作用
【问题讨论】:
请定义“总和不起作用”。当前结果和预期结果将是一个良好的开端。 你为什么首先使用UNION
?选择gen-acute-sales-after-returns + gen-chronic-sales-before-returns + gen-chronic-sales-after-returns
并返回总和。
【参考方案1】:
我只是在这里添加一般的 knex 调试指南,因为这个问题很模糊。
通过为查询生成器调用.toSQL()
查看生成的查询。然后可以查看生成的查询是否有问题。
console.log(
db.select("gen-acute-sales-before-returns").table('sales')
.union(function()
this.select("gen-acute-sales-after-returns").table('sales')
)
.union(function()
this.select("gen-chronic-sales-before-returns").table('sales')
)
.union(function()
this.select("gen-chronic-sales-after-returns").table('sales')
)
.sum(totalSales:"gen-acute-sales-before-returns").toSQL().sql
);
knex 的 union 方法完全有可能存在 bug(不会是第一次)。
【讨论】:
以上是关于在 knexjs mysql 中取联合多列后总和不起作用的主要内容,如果未能解决你的问题,请参考以下文章