下面两个mysql语句有啥不同?还是说就是一样的?
sql目的是将km
字段中的‘万公里’删掉,否则置为0.01
update test inner join (
select name,(
case
when km like "万公里" then
left(km, locate("万",km) - 1)
else
0.01
end
) km
from test
) as b on a.name = b.name
set a.km = b.km
和
update test
set km=(
case
when km like "万公里" then
left(km, locate("万",km) - 1)
else
0.01
end
)
第二个性能佳,修改全部数据它只需要轮询(全表扫描)一次。
第一个 会关联的时候查询一次数据(全表扫描) 然后再根据条件全表扫描一次 再逐一修改
第一个适用于根据其他表的属性更改,