微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我见过以下内容(使用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);

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

原文地址:https://www.jb51.cc/mysql/433977.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐