所以,我从表中选择条目并对它们进行分组,但也希望在结果中创建索引列。在MySQL Workbench中执行此查询可以正常工作,但是当我尝试在node.js服务器上执行它时,会出现一个解析错误,并且mysql表示语法不正确。
我正在使用原始查询和来自 sequelize 的 QueryChainer 。
SET @cnt = 0;
SELECT (@cnt := @cnt + 1) AS id, et.fileName, et.creationDate,
SUM(COALESCE(et.amountExported, 0)) AS sumExported,
SUM(COALESCE(et.amountImported, 0)) AS sumImported,
(SUM(COALESCE(et.amountExported, 0)) - SUM(COALESCE(et.amountImported, 0))) AS difference
FROM exported_transactions AS et
WHERE (et.creationDate BETWEEN ? AND ?) /* ? is replaced by a date string */
GROUP BY et.fileName
删除sql查询中的变量并在node.js服务器上执行它可以正常工作:
SELECT et.fileName, et.creationDate,
SUM(COALESCE(et.amountExported, 0)) AS sumExported,
SUM(COALESCE(et.amountImported, 0)) AS sumImported,
(SUM(COALESCE(et.amountExported, 0)) - SUM(COALESCE(et.amountImported, 0))) AS difference
FROM exported_transactions AS et
WHERE (et.creationDate BETWEEN ? AND ?) /* ? is replaced by a date string */
GROUP BY et.fileName
当然,我可以在没有“id”列的情况下做得很好,但我想在那里进行排序。是否有我的问题的解决方案或是否有其他方法来生成此自动递增列?
答案 0 :(得分:1)
您是否在数据库设置对象中设置了multipleStatements:true?
如果没有,请记住,对于多个语句,数据库查询将结果数组(而不是单个结果对象)传递给查询的回调。 " SET"语句将在结果[0]中拥有自己的结果对象,即使它没有返回任何有趣的数据。