如果选择结果大于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
答案 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 */