mysql - SQL将行乘以数组中的每个元素
问题描述
我在 mysql 表中有一些项目,我想将每一行的卡路里字段乘以数组中的每个元素,例如对于数组1,2,2
,第一行乘以 1,第二行乘以 2,第三行乘以 2。
示例表:
id | name | calories
---+------+---------
1 rice 10
2 bread 20
3 apple 15
所以输出会变成:
id | name | calories
---+------+---------
1 rice 10
2 bread 40
3 apple 30
然后我想得到卡路里的总和。node.js中的SQL语句应该怎么写?req.body.amount
是我想将每行卡路里乘以的值数组。
let sum = [req.body.amount, req.body.name];
let sqlquery = "SELECT SUM(? * calories) AS calories FROM food_item WHERE name IN (?)";
解决方案
使用表的 id 作为数组的索引。
SET @row_number = 0;
Select t.* , t.calories * factors.factor result
from (
SELECT
(@row_number:=@row_number + 1) AS num,
T1.*
from test T1) t
join (
select f.* from (
Select 1 as id, 1 as factor
union Select 2, 2
Union Select 3,2
) f ) factors
on t.num = factors.id
Order by t.id;
使用 json 数组:
SET @row_number = -1;
Select t.* ,
json_extract('{"R": [1,2,2]}' ,
Concat('$.R[',t.num,']') ) jf,
t.calories *
json_extract('{"R": [1,2,2]}' ,
Concat('$.R[',t.num,']') ) result
from (
SELECT
(@row_number:=@row_number + 1) AS num,
T1.*
from test T1) t
order by t.id;
推荐阅读
- android - 如何使用 RecyclerView 显示沿滚动条移动的文本?
- angular - 无法在 Angular 4 测试中加载字体
- xml - 带有元素树的 Python XML:解析子节点上满足多个条件/条件的节点
- r - Rmarkdown YAML 中的引号和内联 R 代码
- java - 带有改造 2 的 JSON 或 POJO
- html - 如何在 wordpress 网站上将 3 个服务框居中
- neo4j - 如何在 Neo4j 中跨不同标签之间的整个数据集创建关系
- cluster-computing - 从 sge 中的 qsub 命令中排除特定节点
- reactjs - Chrome DevTools 不支持公共类字段的断点(第 3 阶段)?
- node.js - 为什么 fast-csv 不将数据存储在 NodeJS 中?