mysql - 如何在node js中使用mysql FIND_IN_SET?

标签 mysql node.js express

我有一个像这样的简单 mysql 数据表:

users:
user_id score
1          0
2         20
3       1430
4        820
5        170

我使用以下 mysql 查询来获取具有特定 user_id 的用户的排名:

SELECT FIND_IN_SET( score, (
                    SELECT GROUP_CONCAT( score
                        ORDER BY score DESC ) 
                    FROM users )
                ) AS rank
                  FROM users WHERE user_id = 4

并且在我的 mysql 中它正确地返回了我

rank
2

因为 user_id=4 在这里得分第二高。

但是相应的查询在nodejs中是什么样子的呢? 我的复制粘贴代码返回错误:

var query = connection.query('SELECT FIND_IN_SET( score, (
                    SELECT GROUP_CONCAT( score
                        ORDER BY score DESC ) 
                    FROM users )
                ) AS rank
                  FROM users WHERE user_id = 4', function(err, result){
    console.log(err);
});

错误:

    var query = connection.query('SELECT FIND_IN_SET( score, (
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected token ILLEGAL

最佳答案

如果不转义行返回或使用ES6 template,就不能在JavaScript中使用多行字符串。 。尝试一下

var query = connection.query("SELECT FIND_IN_SET( score, (\
                SELECT GROUP_CONCAT( score\
                    ORDER BY score DESC ) \
                FROM users )\
            ) AS rank\
              FROM users WHERE user_id = 4", function(err, result){
console.log(err);
});

关于mysql - 如何在node js中使用mysql FIND_IN_SET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36597983/

相关文章:

MySQL 特定的查询性能调优

mysql - 在 sql 触发器中运行存储过程

java - 如何为连接池配置 Hibernate、Spring 和 Apache dbcp?

javascript - 为什么 NodeJS v7 中的 try catch block 比正常速度更快

javascript - 执行 Express.js 中的所有函数后渲染模板

javascript - 如何将每个快速 js 请求包装在域或 trycatch 中

javascript - Node.js:如何为 prod 和 staging 设置不同的变量

node.js - NodeJS 子域 w/vhost 和 greenlock-express

php - 在我之前检查了一个值之后,如何设法更改 SQL 数据库中的字段?

javascript - 滥用 await 作为 return 语句的缺点?