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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/mysql/433977.html

猜你在找的MySQL相关文章