mysql - 在 Knex.js 中选择总和,而不使用 .raw

标签 mysql knex.js

我正在尝试在 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。

关于mysql - 在 Knex.js 中选择总和,而不使用 .raw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838457/

相关文章:

php - Laravel Eloquent 的 Mysql 索引

javascript - var x ="<?php echo strtotime($uEvents[' start']);?>"; 给出了不同的结果

MySQL - BETWEEN 运算符与 FLOAT(10,6) 的作用类似于 > 和 <,而不是 >= 和 <=

javascript - 使用 knex.js 查询多个表

mysql - 当其他列更新时 Knex.js 更改列中的日期

php - 插入值而不提及列名

php - 简单的mysql select错误限制

node.js - Mocha 使用 Knex 测试 PostgreSQL 时出现 MigrationLocked 错误

node.js - 如何检测和记录我的 KnexJS 交易?

sql - 如何使用 knex.js 以另一列作为条件编写 CASE 子句