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
子句。
我正在为 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
子句。