如何在MySQL中的一个查询中转换多个更新查询

时间:2019-04-12 11:05:58

标签: mysql

我必须更新在查询下面写的不同行,但是记录很少就可以了,但是执行此操作的方法仅仅是一个查询。我还有其他类似的问题,但是没有找到与我的方案相符的情况。

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条记录。

1 个答案:

答案 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');