我正在尝试在 Knex.js 中重写一些 MySQL 查询,我觉得我每次都会遇到这种情况.raw,这与我最初想要使用 Knex 的原因背道而驰。
是否可以在不使用 的情况下编写以下查询.raw?
SELECT
product,
SUM(revenue)
FROM orders
Run Code Online (Sandbox Code Playgroud)
使用 raw,可以这样写:
knex()
.select(
'product',
knex.raw('SUM(revenue)')
)
.from('orders')
Run Code Online (Sandbox Code Playgroud)
但使用 Knex 的想法是避免使用 MySQL 查询字符串,所以我希望有另一种方法。还是每个人都在.raw各处使用,而我误解了某些东西?很有可能,我是新手。
Luc*_*ros 10
您可以使用该sum方法。
\n\n\nsum \xe2\x80\x94 .sum(column|columns|raw) 检索给定列或列数组的值的总和(请注意,某些驱动程序不支持多列)。还接受原始表达式。
\n\nRun Code Online (Sandbox Code Playgroud)\nknex(\'users\').sum(\'products\')\nOutputs:\nselect sum("products") from "users"\n
大概是这样的:
\n\nknex()\n .select(\'product\')\n .sum(\'revenue\')\n .from(\'orders\')\nRun Code Online (Sandbox Code Playgroud)\n\n您应该根据您的具体情况进行调整。您可能需要使用类似的方法groupBy(\'product\')来获取每个产品的总收入。
你真的应该仔细阅读 knex 的文档,它非常好而且直接,你绝对不应该一直使用 raw。
\n您甚至可以指定返回总和列名称,如下所示:
knex(tableName)
.select('product')
.sum({ total: 'revenue' })
.groupBy('product');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12466 次 |
| 最近记录: |