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;
我需要帮助为我的小项目设置 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 包含像
这样的 varcharA_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;