0

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

我尝试了这样的事情(只是猜测):

<?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

4 回答 4

2

你也可以使用JOIN

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

这是SQLFiddle演示

于 2013-08-26T08:48:36.160 回答
2

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

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

尽管如此,我还是建议不要这样做,只需循环运行您的查询;此外,不推荐使用 mysql_* 。

于 2013-08-26T08:42:51.590 回答
1

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

UPDATE tab
SET
name= IF(id='1', 'samit', name),
name= IF(id='4', 'anju', name)
于 2013-08-26T08:48:46.867 回答
0
UPDATE `tab`
IF(id= 1, "SET name= 'samit'", ''),
IF(id= 4, "SET name= 'anju'", '')

我希望这对你有用。虽然我还没有测试过但是你可以if在更新查询中使用条件

于 2013-08-26T11:13:49.657 回答