这看起来应该很简单,但我想不出一种方法来做到这一点。假设我有一个包含 5,000 行的表,每行的 ID(主键)为 1–5000。我盲目地插入一个带有现有 ID 的新值,它可能类似于 2677。我想要发生的是,如果 ID 已经存在,它将使用 auto_increment 值,在本例中为 5001。那个或现有的最大值值 + 1。
最重要的是,我不能使用 PHP(或 SQL 以外的任何其他工具)来执行此操作,因为输出是一个需要直接导入而不会出错的查询。
我看过关于 SO 的两个类似问题:
Can you use aggregate values within ON DUPLICATE KEY – 这里的问题是他们从现有表格中进行选择,而我做不到。
on duplicate key update with a condition? – 这里的问题是我没有关于要导入到的表的信息(除了基本结构),也不知道最大值是多少。
最佳答案
INSERT INTO table (column1,column2) VALUES (1,2) ON DUPLICATE KEY UPDATE id=VALUES(id)
显然,这需要一个带有 AUTO_INCREMENT
的 id
列。
此外,如果您稍后需要选择插入的 id
就像它是一个新的 Insert 一样,您可以:
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(VALUES(id));
关于mysql - 在重复键上插入自动增量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39434751/