0

1 つのクエリでテーブルの異なる列の値を変更したいのですが、可能ですか?

私はこのようなことを試しました(単なる推測です):

<?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 に答える