MySQL:使用IF ELSEIF添加计算列



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

演示

最新更新