MySQL 通过 ODBC 进行多重插入和重复键更新问题

标签 mysql insert duplicates odbc key

我在 Stackoverflow 中进行了广泛的搜索,但找不到解决方案。

我正在尝试通过 ODBC 连接将数据插入 MySQL 数据库。只有一个主键,即 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' 等只会导致错误

Error [MySQL][ODBC 8.0(w) Driver][mysqld-5.7.22]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

我还尝试过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 通过 ODBC 进行多重插入和重复键更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52211530/

相关文章:

mysql - 使用 HAproxy 拆分 mysql 集群的读/写

c++ - 二叉搜索树插入垃圾数据

sql - XML 解析错误 : 'A string literal was expected' when inserting values into table

php - Mysql 比较表中的值

PHP json_decode Big(O) 和优化

Mysql函数不起作用

c++ - 将 multi_key 映射转换为连接多个键的 "normal"映射

Python 和 MySql,将数据插入到通过外键连接的两个表中的替代方法

Java - 检查 ArrayList 是否有重复项

C# 正则表达式匹配查找几乎相同的字符串