MySQL: 使用 if else 更新多列

MySQL: Updating multiple columns using if else

我需要帮助为我的小项目设置 mySQL 更新查询,如下所示:

UPDATE TABLE 
IF SUBSTRING_INDEX(REFERENCE, '_', -1)= 'A'  THEN
{
  TYPE = 1
  COLOR = 'BLUE'
}
ELSEIF SUBSTRING_INDEX(REFERENCE, '_', -1)= 'B'  THEN
{
  TYPE = 2
  COLOR = 'RED'
},
ID = SUBSTRING_INDEX(REFERENCE, '_', 1)
WHERE REFERENCE IS NOT NULL

在我的 table 中,有一列 REFERENCE 包含像

这样的 varchar
A_1, A_2, A_10
B_1, B_4, B_12
etc...

其中符号“_”之前的字符确定其他列的某些值,如上文所述。 我对 mySQL 还是很陌生,非常感谢您的帮助!

您可以使用 case 表达式:

UPDATE TABLE 
    SET TYPE = (CASE WHEN SUBSTRING_INDEX(REFERENCE, '_', -1) = 'A'  
                     THEN 1
                     WHEN SUBSTRING_INDEX(REFERENCE, '_', -1) = 'B'  
                     THEN 2
                     ELSE TYPE
                END),
        COLOR = (CASE WHEN SUBSTRING_INDEX(REFERENCE, '_', -1) = 'A'  
                      THEN 'BLUE'
                      WHEN SUBSTRING_INDEX(REFERENCE, '_', -1) = 'B'  
                      THEN 'RED'
                      ELSE COLOR
                 END),
        ID = SUBSTRING_INDEX(REFERENCE, '_', 1)
    WHERE REFERENCE IS NOT NULL;