繁体   English   中英

SUM / IF 与 MySQL 中的 INNER JOIN--如何将其转换为 knex 查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM