MySQL多个INSERT与ODBC上的ON DUPLICATE KEY UPDATE问题

问题描述 投票:0回答:1

我在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

有任何想法吗?

mysql insert duplicates odbc key
1个回答
1
投票

你不能有多个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';"
© www.soinside.com 2019 - 2024. All rights reserved.