加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 我可以使用SET选项使用ON DUPLICATE KEY UPDATE和INSERT

发布时间:2020-12-11 23:38:11 所属栏目:MySql教程 来源:网络整理
导读:我见过以下内容(使用VALUES选项): $query = "INSERT INTO $table (column-1,column-2,column-3) VALUES ('value-1','value-2','value-3') ON DUPLICATE KEY UPDATE SET column1 = value1,column2 = value2,column3 = value3,ID=LAST_INSERT_ID(ID)"; 但我无

我见过以下内容(使用VALUES选项):

$query = "INSERT INTO $table (column-1,column-2,column-3) VALUES ('value-1','value-2','value-3') ON DUPLICATE KEY UPDATE SET column1 = value1,column2 = value2,column3 = value3,ID=LAST_INSERT_ID(ID)"; 

…但我无法想象如何将ON DUPLICATE KEY UPDATE添加到我正在使用的内容中:

$query = "INSERT INTO $table SET
    column-1 ='value-1',column-2 ='value-2',column-3 ='value-3'
";

例如:,伪代码

$query = "INSERT INTO $table SET
    column-1 ='value-1',column-3 ='value-3'
    ON DUPLICATE KEY UPDATE SET
    column1 = value1,$id=LAST_INSERT_ID(id)"; 
    $my_id = mysql_insert_id();
";

我会发现后者更容易阅读.希望澄清,没有在手册中找到一个例子.

干杯

最佳答案 我经常使用ON DUPLICATE KEY UPDATE.对于某些情况,它是非标准的SQL扩展,真的值得使用.

首先,您需要确保具有唯一的键约束. ON DUPLICATE KEY UPDATE函数只有在出现唯一的密钥违规时才会启动.

这是一种常用的格式:

 $query = "INSERT INTO $table (column1,column2,column3)
 VALUES ('value-1','value-3')
 ON DUPLICATE KEY UPDATE
 column1 = values(column1),column2 = values(column2),column3 = values(column3);"

column1 = values(column1)表示“如果查询未达到重复键冲突,则更新column1,其中包含已插入的值.”换句话说,它只是意味着将column1更新为插入工作所需的内容.

查看此代码,您正在更新要插入的所有三个列似乎不正确.哪个列有独特的约束条件?

编辑:根据OP的问题,根据’SET’格式修改mysql插入语句.

基本上使用ON DUPLICATE KEY UPDATE,您只需像往常一样编写insert语句,但添加ON DUPLICATE KEY UPDATE子句.我相信它应该像这样工作:

INSERT INTO $table 
    set column1 = 'value-1',column2 = 'value-2',column3 = 'value-3'
ON DUPLICATE KEY UPDATE
    column1 = values(column1),column3 = values(column3);

同样,您要插入的列之一必须具有唯一索引(或列的组合).这可能是因为其中一个是主键,或者因为表上有唯一索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读