SQL替换语句的正确MariaDB语法

时间:2019-09-12 19:02:30

标签: mysql sql mariadb sqlanywhere

尝试确定我的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那样开始。

1 个答案:

答案 0 :(得分:1)

LIMIT放在最后,因此没有什么可替代的,只需将其连接起来即可:

const sql = this.query + ` LIMIT ${recordsProcessed}, ${recordsPerRun}`;

或将其合并到模板中

const sql = `${this.query} LIMIT ${recordsProcessed}, ${recordsPerRun}`;