我正在与Alter Table场景作斗争。我有一张桌子";示例";其中存在第1列至第3列。我想添加一列";目的地";其应包含来自列2或来自列3的值,这取决于列1。我尝试了以下代码,但它在IF语句的第一行抛出了错误。错误是column1引用,它需要一个左括号,但当我将IF子句的条件放在括号中时,它拒绝了THEN函数。MySQL 8.0请参阅下面的代码。谁能帮忙?非常感谢,Thomas
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
)
;
您可以使用DB版本5.7+中发布的Generated Column的以下语法(包含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
)
而不分配给派生列本身并且不分配CCD_ 3子句。
演示