mysql - MySQL:使用 IF ELSEIF 添加计算列
问题描述
我正在为 Alter 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
)
;
解决方案
您可以使用DB 版本 5.7+ 中发布的 Generated Column的以下语法(包含CASE..WHEN..ELSE
Statement 而不是):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
子句。
推荐阅读
- javascript - 可以返回 cxd 的 Javascript 函数
- python - 通过在 Python 中添加案例聚合来汇总统计信息
- pymongo - 如何使用 python 发送远程更新?
- dbt - 在 dbt 中引用 BigQuery UDF
- r - 在 r 中将 char 1:00 转换为 datetime POSIXct 01:00:00
- c# - 在 smtp 客户端 c#.net 中为电子邮件附加 Base64 图像 url
- xml - 从 Oracle 中的 CLOB 读取 xml 时检索正确的字符集
- javascript - 为什么是
- 渲染两次?
- android - 我如何保持循环?
- javascript - 将数据从客户端发送到服务器并使用“套接字”显示到终端