MySQL多个INSERT与ODBC上的ON DUPLICATE KEY UPDATE问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL多个INSERT与ODBC上的ON DUPLICATE KEY UPDATE问题相关的知识,希望对你有一定的参考价值。
我在Stackoverflow中搜索得非常广泛,但无法找到解决方案。
我试图通过ODBC连接将数据插入mysql数据库。只有一个PRIMARY键,即ID字段。
首先是没有ON DUPE位的示例代码
Query$ = Query$ + "INSERT INTO `" + DatabaseMainDataTable.s + "` (`ID`, `Date_TS`, `HTeam`, `ATeam`, `FTG`, `FTA`, `FT`) VALUES "
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H');"
现在这工作正常但是我需要添加ON DUPLICATE KEY UPDATE以更新任何现有记录,所以使用这段代码我会认为它会像上面的代码一样工作。
Query$ = Query$ + "INSERT INTO `" + DatabaseMainDataTable.s + "` (`ID`, `Date_TS`, `HTeam`, `ATeam`, `FTG`, `FTA`, `FT`) VALUES "
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H') ON DUPLICATE KEY UPDATE FTG=0, FT='Z',"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H') ON DUPLICATE KEY UPDATE FTG=0, FT='Z',"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H') ON DUPLICATE KEY UPDATE FTG=0, FT='Z',"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H') ON DUPLICATE KEY UPDATE FTG=0, FT='Z',"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H') ON DUPLICATE KEY UPDATE FTG=0, FT='Z',"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H') ON DUPLICATE KEY UPDATE FTG=0, FT='Z';"
但这不起作用。只有ON DUPLICATE KEY UPDATE FTG = 0,FT ='Z'等添加只会导致错误
错误[MySQL] [ODBC 8.0(w)驱动程序] [mysqld-5.7.22]您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在附近使用正确的语法
我也尝试过ON DUPLICATE KEY UPDATE FTG=VALUES(0), FT=VALUES('Z')
没有成功。
这个有趣的事情是,如果我使用上面的代码并粘贴到phpmyadmin然后插入成功,所以我只是不知道是什么导致错误通过ODBC
有任何想法吗?
你不能有多个ON DUPLICATE KEY
条款。在所有值之后,只需将其中一个放在最后。
Query$ = Query$ + "INSERT INTO `" + DatabaseMainDataTable.s + "` (`ID`, `Date_TS`, `HTeam`, `ATeam`, `FTG`, `FTA`, `FT`) VALUES "
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H'),"
Query$ = Query$ + "(" + GetRandom() + ", 1533340899, 'Peter', 'Frankie', 2, 1, 'H')"
Query$ = Query$ + " ON DUPLICATE KEY UPDATE FTG=0, FT='Z';"
以上是关于MySQL多个INSERT与ODBC上的ON DUPLICATE KEY UPDATE问题的主要内容,如果未能解决你的问题,请参考以下文章
Java MySQL executeUpdate() 为重复键更新上的 INSERT ON 返回啥?
MySQL INSERT 与 ON DUPLICATE SELECT 可能吗?
MySQL INSERT INTO / ON DUPLICATE KEY 与 SELECT 语句问题
MySQL的replace into 与insert into on duplicate key update