MySQL:使用 IF ELSEIF 添加计算列

MySQL: Adding Calculated Column with IF ELSEIF

我正在为 Alter Table 场景而苦苦挣扎。 我有一个 table “示例”,其中包含第 1 列到第 3 列。我想添加一个“目的地”列,它应该包含来自 column2 或来自 column3 的值,具体取决于 column1。 我尝试了以下代码,但它在 IF 语句的第一行抛出错误。 column1 引用有错误,它需要一个左括号,但是当我将 IF 子句的条件放在括号中时,它拒绝了 THEN 函数。 MySQL 8.0 请参阅下面的代码。谁能帮忙?非常感谢, 托马斯


ADD COLUMN
(
Destination VARCHAR(15) 
GENERATED ALWAYS AS 
    (
    IF column1 = "north" THEN
        SET destination = column2
    ELSEIF column1 = "south" THEN   
        SET destination = column3
    ELSE
        SET destination = ""
    END IF
    )
STORED
)
;

您可以使用数据库版本 5.7+ 中发布的生成列的以下语法(包含 CASE..WHEN..ELSE 语句而不是 IF..THEN..ELSE):

ALTER TABLE t1 ADD COLUMN
(
Destination VARCHAR(15) 
GENERATED ALWAYS AS 
    (
    CASE WHEN column1 = "north" THEN
           column2
         WHEN column1 = "south" THEN   
           column3    
    END 
    )
STORED
)

没有分配给派生列本身并且没有 set 子句。

Demo