我必须更新在查询下面写的不同行,但是记录很少就可以了,但是执行此操作的方法仅仅是一个查询。我还有其他类似的问题,但是没有找到与我的方案相符的情况。
UPDATE sample_topup SET meta_value='topup' WHERE meta_key='status' ;
UPDATE sample_topup SET meta_value='Topup' WHERE meta_key='status_label' ;
UPDATE sample_topup SET meta_value='tage-1' WHERE meta_key='stage' ;
UPDATE sample_topup SET meta_value='Stage 1' WHERE meta_key='lapp_stage_label' ;
我希望该解决方案能够提供更快,更流畅的执行,因为在我的表中有超过10,000,000条记录。
答案 0 :(得分:1)
您可以使用CASE
表达式来检查meta_key
是否是您要更新行的表达式。如果匹配,则返回正确的值。否则会meta_value
,即不更改meta_value
。
UPDATE sample_topup
SET meta_value = CASE
WHEN meta_key = 'status' THEN
'topup'
WHEN meta_key = 'status_label' THEN
'Topup'
WHEN meta_key = 'stage' THEN
'tage-1'
WHEN meta_key = 'lapp_stage_label' THEN
'Stage 1'
ELSE
meta_value
END
WHERE meta_key IN ('status',
'status_label',
'stage',
'lapp_stage_label');