使用单个Query更改MySQL中的多个值

时间:2013-08-26 08:31:10

标签: php mysql sql-update

我想在一个查询中更改表的不同列值,这可能吗?

我试过这样的事情(只是一个猜测):

<?php
$q="UPDATE tab SET name='samit' WHERE id='1' && set name='anju' where id='4'";
$run=mysql_query($q);
if($run){
echo 'updated';
}
else{
echo 'update failed';
}
?>

它不起作用。我可以使用循环来完成此操作,但循环会增加操作时间。

4 个答案:

答案 0 :(得分:2)

你可以,但你必须使用这样的案例:

UPDATE tab
    SET name = CASE id
        WHEN 1 THEN 'samit'
        WHEN 4 THEN 'anju'
    END
    WHERE id IN (1,4);

不过,我建议不要这样做,只需用循环运行你的查询;另外,不推荐使用mysql_ *。

答案 1 :(得分:2)

您也可以使用JOIN

UPDATE tab t1 JOIN tab t2
    ON t1.id = 1 AND t2.id = 4
   SET t1.name = 'samit',
       t2.name = 'anju'

这是 SQLFiddle 演示

答案 2 :(得分:1)

这可能不是最好的方式,但是:

UPDATE tab
SET
name= IF(id='1', 'samit', name),
name= IF(id='4', 'anju', name)

答案 3 :(得分:0)

UPDATE `tab`
IF(id= 1, "SET name= 'samit'", ''),
IF(id= 4, "SET name= 'anju'", '')

我希望这对你有用。虽然我尚未对其进行测试,但您可以在更新查询中使用if条件