我很好奇是否可以连续更新所有匹配字段,并在mysql中一次使用新值。
我知道我可以使用ALTER TABLE
更改默认值,但是我只对一行感兴趣,而不是更改整个表的默认值。如有必要,我可以在每个循环中遍历每个循环,但是我很好奇是否可以更优雅地完成此操作。
想象我的行看起来像这样:
| 1 | Joe | Smith | null | X | X | X | Y | X | Y | Y | X | null | Y | X | null |
是否可以一次更新与X
匹配Y
的所有字段?
因此,结果看起来像这样:
| 1 | Joe | Smith | null | Y | Y | Y | Y | Y | Y | Y | Y | null | Y | Y | null |
(假设1
是主要键,ID ...如果这完全有帮助)
只能使用一个UPDATE
查询来完成?
,如果它们为'x',则将所有列的值更改为'y',否则将其保持不变。
update mytable set
col1 = if(col1 = 'x', 'y', col1),
col2 = if(col2 = 'x', 'y', col2),
col3 = if(col3 = 'x', 'y', col3),
...
where id = ?;
实际上,它否则将其更新为原始值,但是从语义上讲,这与使其保持不变,而在mySQL中是相同的(即它不算任何方式,它都不是"更新")
<)