mysql - 合并语句中的 Node.js mysql 语法错误?

标签 mysql node.js

我有一个构造如下的 sql 查询:

tmpQUERY = "INSERT INTO vertix_users (user_name, user_email, user_pass) " +
    "VALUES (" + mysql.escape(userName) +
    ", " + mysql.escape(userEmail) + 
    ", " + mysql.escape(userPass) + ")";

tmpQUERY = "MERGE vertix_users WITH (HOLDLOCK) AS oldData " +
    "USING (VALUES (@user_name, @user_email)) AS newData (" + mysql.escape(userName) + ", " + mysql.escape(userEmail) + ") " +
    "ON newData.user_name = oldData.user_name AND newData.user_email = oldData.user_email " +
    "WHEN NOT MATCHED BY TARGET THEN " + tmpQUERY;

当我执行代码时,我得到以下日志:

MERGE vertix_users WITH (HOLDLOCK) AS oldData USING (VALUES (@user_name, @user_email)) AS newData ('asfasfsaff vvv', 'asfasfasfasf') ON newData.user_name = oldData.user_name AND newData.user_email = oldData.user_email WHEN NOT MATCHED BY TARGET THEN INSERT INTO vertix_users (user_name, user_email, user_pass) VALUES ('asfasfsaff vvv', 'asfasfasfasf', 'saqqq')

还有一个 sql 语法错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MERGE vertix_users WITH (HOLDLOCK) AS oldData USING (VALUES (@user_name, @user_e' at line 1]

没有合并的简单插入语句工作正常,但只要我添加该代码的第二部分,它就会产生该错误。

最佳答案

MERGE 不被 MySQL 支持,对应的是

INSERT ... ON DUPLICATE KEY UPDATE

关于mysql - 合并语句中的 Node.js mysql 语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712106/

相关文章:

php - 如何从数据库制作动态菜单模块

php - 如何在数据库中为用户设置 token ,即使在浏览器关闭后也永不过期?

mysql - 如何防止同一日期的时间重叠?

mysql - Nodejs中500000或更多记录的排名生成

javascript - 强制 heroku 使用特定版本的 Node.js

node.js - 在 Sails js 上创建新应用程序时出现 NPM 错误

php - 如何使用 Eloquent 方式获得行位置

Node.js 给出了两个版本并且给出了错误的依赖

r - 在另一种语言上使用 R 中经过训练的模型

angularjs - 未知提供商 : uiCropperProvider <- uiCropper