Select Knex.js 中的总和而不使用 .raw
Select a sum in Knex.js without using .raw
我正在尝试重写 Knex.js 中的一些 MySQL 查询,我觉得我每次 运行 变成 .raw
,这感觉与我首先要使用 Knex 的原因。
是否可以使用 .raw
编写以下查询 而无需 ?
SELECT
product,
SUM(revenue)
FROM orders
使用raw,可以写成:
knex()
.select(
'product',
knex.raw('SUM(revenue)')
)
.from('orders')
但使用 Knex 的想法是避免使用 MySQL 查询字符串,所以我希望有另一种方法。还是每个人都只是到处使用 .raw
,而我误会了什么?很有可能,我是新手。
您可以使用sum
方法。
sum — .sum(column|columns|raw) Retrieve the sum of the values of a
given column or array of columns (note that some drivers do not
support multiple columns). Also accepts raw expressions.
knex('users').sum('products')
Outputs:
select sum("products") from "users"
大概是这样的:
knex()
.select('product')
.sum('revenue')
.from('orders')
您应该根据自己的具体情况进行调整。您可能需要使用类似 groupBy('product')
的方法来获取每件产品的总收入。
你真的应该复习一下 knex 的 documentation,它非常好而且简单明了,你绝对不应该一直使用 raw。
您甚至可以像这样指定返回的总和列名称:
knex(tableName)
.select('product')
.sum({ total: 'revenue' })
.groupBy('product');
我正在尝试重写 Knex.js 中的一些 MySQL 查询,我觉得我每次 运行 变成 .raw
,这感觉与我首先要使用 Knex 的原因。
是否可以使用 .raw
编写以下查询 而无需 ?
SELECT
product,
SUM(revenue)
FROM orders
使用raw,可以写成:
knex()
.select(
'product',
knex.raw('SUM(revenue)')
)
.from('orders')
但使用 Knex 的想法是避免使用 MySQL 查询字符串,所以我希望有另一种方法。还是每个人都只是到处使用 .raw
,而我误会了什么?很有可能,我是新手。
您可以使用sum
方法。
sum — .sum(column|columns|raw) Retrieve the sum of the values of a given column or array of columns (note that some drivers do not support multiple columns). Also accepts raw expressions.
knex('users').sum('products') Outputs: select sum("products") from "users"
大概是这样的:
knex()
.select('product')
.sum('revenue')
.from('orders')
您应该根据自己的具体情况进行调整。您可能需要使用类似 groupBy('product')
的方法来获取每件产品的总收入。
你真的应该复习一下 knex 的 documentation,它非常好而且简单明了,你绝对不应该一直使用 raw。
您甚至可以像这样指定返回的总和列名称:
knex(tableName)
.select('product')
.sum({ total: 'revenue' })
.groupBy('product');