如果行>更新0或者在Mysql上插入

时间:2014-03-16 23:37:37

标签: mysql sql database

如果选择结果大于0,如何创建更新查询,否则执行insert?

我曾尝试执行此代码,但无法正常工作

select
    case
        where count(id) > 0 (update product set description = 'blablabla' where id_fk1 = 3 AND id_fk2 = 4)
        else (insert into product (description) values('blablabla')
    end

我知道这是一个选择代码,它不会工作,但我不知道如何在mysql中使用If

5 个答案:

答案 0 :(得分:0)

您可以使用此示例foreign-keys 有一种方法可以组合单个查询,使用'update ...'和'insert into ...'构成单个查询 或者,如果我误解了你,你可以使用这个insert-on-duplucate

答案 1 :(得分:0)

您需要的是INSERT with ON DUPLICATE KEY UPDATE子句:

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

答案 2 :(得分:0)

之前有人问过: Insert into a MySQL table or update if exists

包含许多有趣的答案。

答案 3 :(得分:0)

据推测,您希望将付费id = 3, description = 'blablabla'插入表格中。如果存在,则更新说明。

您可以使用insert . . . on duplicate key insert,假设id被声明为主键或唯一键。您可以这样做:

create unique key product_id on product(id);

然后以下语句执行您想要的操作:

insert into product(id, description)
    select 3, 'blablabla'
    on duplicate key insert description = values(description);

编辑:

我认为同样的想法适用于两个外键:

create unique key product_fk1_fk2 on product(id_fk1, id_fk2);

insert into product(id_fk1, id_fk2, description)
    select 3, 4, 'blablabla'
    on duplicate key insert description = values(description);

答案 4 :(得分:0)

它将基于您的查询结果的数量,对吧?

$result=mysqli_query($con,"SELECT * FROM product");

if(mysqli_num_rows($result)==0){

mysqli_query($con,"INSERT INTO product (description) VALUES ('blah')");

}

else {

mysqli_query($con,"UPDATE product SET description='blah'");

}

如果您尝试将其基于您的ID字段,请尝试以下操作:

$result=mysqli_query($con,"SELECT * FROM product");

if(mysqli_num_rows($result)==0){

mysqli_query($con,"INSERT INTO product (description) VALUES ('blah')");

}

else 

while($row=mysqli_fetch_array($result)){

$id=$row['id'];

if($id>0){
mysqli_query($con,"UPDATE product SET description='blah' WHERE id='$id'");
}

} /* END OF WHILE LOOP */

} /* END OF ELSE */