我使用多个字段更新表格。现在,如果另一个字段具有定义的值,则只能更新其中一个字段,例如:
id | name | image | update
--------------------------------------------------
1 | john | myimage.jpg | 0
2 | ben | yourimage.gif | 1
--------------------------------------------------
现在我遍历所有行并更新所有字段,但只有在“update”-flag设置为1时才应更新图像。 如果为0,则不应覆盖现有值。
现在我尝试了这个:
...
`image` = IF(update = 1, VALUES(`image`),`image`)
...
但它显然无法正常工作,因为它会在每种情况下覆盖图像。
答案 0 :(得分:3)
update table
set image = new_value
where update = 1
and id = ?// if you want spacific row, if not ignore this line
答案 1 :(得分: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')
答案 2 :(得分:1)
首先只需从查询表中获取更新值
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
{
}
答案 3 :(得分:1)
小心“更新”列的名称。这是一个保留字,就像你在下面看到的那样(用于更新行)。 我会改为:
ALTER mytable
CHANGE update update_flag tinyint
然后使用以下内容更新行:
UPDATE mytable
SET image = somevalue
WHERE update_flag = 1
AND id = someid
如果您不想更新update_flag为1的所有行,则只需要最后一行。
答案 4 :(得分:0)
update your_table
set `image` = case when update = 1
then $newvalue
else `image`
end,
other_column = 'some_value'