2

複数のフィールドでテーブルを更新します。現在、フィールドの 1 つは、別のフィールドに値が定義されている場合にのみ更新できます。たとえば、次のようになります。

 id   | name       | image               | update
--------------------------------------------------
    1 | john       | myimage.jpg         | 0
    2 | ben        | yourimage.gif       | 1
--------------------------------------------------

ここで、すべての行を調べてすべてのフィールドを更新しますが、「更新」フラグが 1 に設定されている場合にのみ画像を更新する必要があります。0 の場合、既存の値は上書きされません。

今私はこれを試しました:

...
`image` = IF(update = 1, VALUES(`image`),`image`)
...

ただし、すべての場合に画像を上書きするため、明らかに機能していません。

4

5 に答える 5

4
update table
set image = new_value
where update = 1
and id = ?// if you want spacific row, if not ignore this line
于 2013-10-01T07:11:49.513 に答える
2

画像列のみを更新する場合は、Ofer の回答が最適です。画像の更新をより大きなクエリにパックしたい場合は、次のようにIF()機能します。

IF(expression, return this if expression true, return this if expression false)

あなたの場合:

UPDATE table t1
SET
t1.image = IF(t1.update = 1, t1.image, 'new image')
于 2013-10-01T07:15:09.217 に答える
1

最初にクエリでテーブルから update の値を取得するだけです

 Select update from your table where id = 'provide row id'


  Then using if else condition by checking value of update fetch fire your update 
   query

 eg.
    if($update == 1)
      {
      echo "Your update query here";
       }

    else
     {
     }
于 2013-10-01T07:15:25.347 に答える
0
update your_table
set `image` = case when update = 1 
                  then $newvalue 
                  else `image`
             end,
    other_column = 'some_value'
于 2013-10-01T07:09:34.587 に答える