[英]SUM / IF with INNER JOIN in MySQL--how to turn it into a knex query?
我在下面有这个 MySQL 语句,它按预期工作。 感觉很好……但是……
我正在努力解决如何将其放入 knex.js 查询构建器中。 我见过的 knex.js 文档中没有“.selectRaw”。 我只能用 knex.js 总结一列。 knex.js 似乎没有解决这个问题。 这个想法是对我正在构建的东西有赞成票和反对票。 我想知道每个类别的投票数,然后是总和(向上 + 向下 = 总数)。 我试图避免将其分解为不同的查询。 我还没有找到任何好的样本。
任何人都可以帮忙吗? 谢谢。
use iconwebsite;
SELECT
i.icon_description,
SUM(IF(v.vote_score > 0, v.vote_score, 0)) AS up,
SUM(IF(v.vote_score < 0, v.vote_score, 0)) AS down,
SUM(IF(v.vote_score, v.vote_score, 0)) AS total
FROM
icon i
INNER JOIN
vote v ON i.icon_id = v.icon_id
GROUP BY i.icon_description;
您可以在查询中使用带有 knex 的原始 SQL:
knex.select(knex.raw(`
use iconwebsite;
SELECT
i.icon_description,
SUM(IF(v.vote_score > 0, v.vote_score, 0)) AS up,
SUM(IF(v.vote_score < 0, v.vote_score, 0)) AS down,
SUM(IF(v.vote_score, v.vote_score, 0)) AS total
FROM
icon i
INNER JOIN
vote v ON i.icon_id = v.icon_id
GROUP BY i.icon_description;
`))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.