尝试确定我的SQL语句为什么在要重构的Node代码中返回错误以连接到MariaDB而不是通过SQL Anywhere进行连接后,我将其范围缩小到了REPLACE
语句,我们使用该语句来计算有很多记录要处理,还有多少要跳过。
我的初始测试SQL SELECT语句如下:
SELECT customer_name FROM ar.customers
然后,我们用REPLACE
语句来确定要处理的记录数和要跳过的记录数。当我们使用SQL Anywhere时,如下所示:
const sql = this.query.replace(/SELECT/i, `SELECT TOP ${recordsPerRun} START AT ${recordsProcessed + 1}`);
该语法需要更改,因为MariaDB使用“ LIMIT”而不是“ TOP”。根据我的理解,第一个参数是要跳过的记录数,第二个参数是要返回的记录数。
因此,就我而言,它就像是这样:
LIMIT ${recordsProcessed}, ${recordsPerRun}
但是,我不太了解完整的语法。如何以上述方式与我的初始测试SQL SELECT语句一起使用的方式编写此REPLACE
语句?这似乎很棘手,因为在MariaDB中,LIMIT
现在位于查询的末尾,而不是像MySQL的TOP
那样开始。
答案 0 :(得分:1)
LIMIT
放在最后,因此没有什么可替代的,只需将其连接起来即可:
const sql = this.query + ` LIMIT ${recordsProcessed}, ${recordsPerRun}`;
或将其合并到模板中
const sql = `${this.query} LIMIT ${recordsProcessed}, ${recordsPerRun}`;