php - ON DUPLICATE KEY 插入新行而不是更新

标签 php mysql

我有个小问题。

这是我得到的 SQL 代码:

INSERT INTO matches (match_id, league_name, league_id, test_one) 
VALUES (866860, 'Portugal',1,'testing') 
ON DUPLICATE KEY 
UPDATE league_name = 
  CASE match_id 
    WHEN 866860 
      THEN 'Portugal' END, 
league_id = 
  CASE match_id 
    WHEN 866860 
      THEN 1 END, 
test_one = 
  CASE match_id 
    WHEN 866860 
      THEN 'testing' END

问题是,它总是插入新行而不是更新现有行。 是不是因为我需要将“match_id”设置为 AUTO_INCREMENT 或其他任何内容(目前,我的“id”字段是 AUTO_INCREMENT)

最佳答案

AUTO_INCREMENT 与此处无关。但是ON DUPLICATE KEY需要一把 key 。更具体地说,唯一键,例如主键或唯一索引。

根据列名,我怀疑 match_id 不是主键。

更新:您还编写了一组复杂的CASE ... END 结构。看看 VALUES()功能。

关于php - ON DUPLICATE KEY 插入新行而不是更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341189/

相关文章:

java - eclipse数据库创建问题

php - SQL - 选择用户名 WHERE 角色 = $string

mysql - 书架js : How to query specific fields within join statements?

MYSQL,多列分组

javascript - Jquery 验证插件 + php 操作不起作用

php - 多种形式的通用php函数

php - Pspell 不起作用

php - 使用 Laravel 计算我当前点与 MySQL 中其他点之间的距离

javascript - 简单的 JavaScript 加 PHP 数据库访问

java.sql.SQLException : Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...'