当前位置: 首页 > 面试题库 >

MERGE语句上的语法错误

双恩
2023-03-14
问题内容

我正在尝试在Go中执行MERGE语句:

query := "MERGE staged ON (email=$1)" +
" WHEN NOT MATCHED THEN INSERT (email, secret, passwd, ts, newAcct)" +
" VALUES($1,$2,$3,$4,TRUE)" +
" WHEN MATCHED THEN UPDATE staged SET" +
" newAcct=TRUE, existingUser=NULL, secret=$2, ts=$4"

_, err := db.Exec(query, email, secret, passwd, time.Now())

但是我得到了这个错误:

pq: S:"ERROR" F:"scan.l" R:"scanner_yyerror" L:"1001" M:"syntax error at or near \"MERGE\"" P:"1" C:"42601"

在MySQL中也是如此:

Error 1064: 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 staged ON (email=?) WHEN NOT MATCHED THEN INSERT (email, secret, passwd, t' at line 1

怎么了?


问题答案:

MERGE不支持MySQL,等效的是

插入…在重复的密钥更新上

尝试这个,

INSERT INTO tableName (email, secret, passwd, ts, newAcct) 
VALUES ($1,$2,$3,$4,TRUE)
ON DUPLICATE KEY UPDATE newAcct=TRUE, existingUser=NULL, secret=$2, ts=$4

但请确保email将其设置为Primary KeyUnique



 类似资料:
  • 下面是我在Snowflake1中实现merge with stream的步骤。创建一个表create或replace表employee(employee_id number,salary number,manager_id number);2.创建流。在表employees上创建或替换流employees_stream3.创建消费者表。创建或替换表employees_consumer(employ

  • 问题内容: 我的sql语句出了什么问题,它说问题在FULL JOIN附近,但是我很困惑: 请温柔些,因为我不是sql Fundi 问题答案: MySQL不提供完全连接,您可以使用 一对LEFT + RIGHT和UNION;或者 使用LEFT,RIGHT和INNER和UNION ALL的三元组 该查询也非常错误,因为您有GROUP BY,但是SELECT列不是聚合的。 将其正确转换为LEFT + R

  • 问题内容: 源表 目标表 合并后 我正在使用此SQL 这会导致错误 消息8672,级别16,状态1,第18行 MERGE语句尝试多次更新或删除同一行。当目标行与多个源行匹配时,就会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多匹配一个源行,或使用GROUP BY子句对源行进行分组。 我想用三个匹配值中的任何一个用地址值更新A中的行。这该怎么做? 问题答案

  • 目前遇到此语法错误,错误发布在代码下方。 上面的代码,无法找出if语句上的语法错误。错误消息将很快粘贴为注释

  • 问题内容: 为什么Python在第9行的简单语句中给我一个语法错误? Python的版本是: 问题答案: 在Python 3中,print是一个函数,您需要像这样调用它。

  • SQL查询: 这是一个旧文件,我试图通过phpMyAdmin在HostGator上运行。我收到一个错误,上面写着: MySQL说:#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以在第5行的“)ENGINE=MyISAM”附近使用正确的语法 更新:如果我将语句更改为this,我仍然会收到错误: 我得到错误: 错误1064 (42000):您的SQL语法有错误;检查与您的