如何使用where

时间:2018-10-18 09:00:47

标签: mysql

我想针对单列更新单列。但是我收到这个错误

  

操作数应包含1列

查询为

UPDATE installations ins SET ins.`ref_no` = ('28374310017257',
'28374210711610',
'28373411561301',
'28373410914000',
'28373410897300') 
 WHERE ins.`meter_msn` IN ('002998000588',
'002998000674',
'002999000616',
'002999000984',
'002999000710')

如何摆脱这个错误?

注意:

我不想多次使用查询来更新它们,我只想在一个查询中更新记录。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以使用CASE .. WHEN为特定的ref_no有条件地定义meter_msn的更新值:

UPDATE installations ins 
  SET ins.`ref_no` = CASE ins.`meter_msn`
                       WHEN '002998000588' THEN '28374310017257'
                       WHEN '002998000674' THEN '28374210711610'
                       WHEN '002999000616' THEN '28373411561301'
                       WHEN '002999000984' THEN '28373410914000'
                       WHEN '002999000710' THEN '28373410897300'
                     END 
 WHERE ins.`meter_msn` IN ('002998000588',
                           '002998000674',
                           '002999000616',
                           '002999000984',
                           '002999000710')