我正在尝试用新表中的新数据来转换一些旧数据。
我创建了一个sql脚本,它返回case语句的构建。这就是我从select语句中得到的一个例子:'WHEN a=2然后350‘。
UPDATE A
SET A.a = CASE
(SELECT CONCAT('WHEN a= ', PP.Id, ' THEN ', LI.Id)
FROM A PP
JOIN B LI ON LI.Description = PP.Name
JOIN C L ON LI.List_Id = L.Id
WHERE L.Code = 'Code')
END因此,通常情况下,它应该为每一行代码生成以下内容:
A=1然后2的情况
A=2然后3的情况
A=3然后4的情况
..。
但是,当我想要执行代码时,它会在END语句上出现一个错误。这可能是因为它期望类似于a=1然后0结束而不是select语句的情况。
有解决办法吗?还是我做错了?
谢谢
发布于 2017-05-02 12:24:58
您可以使用一个子查询来选择li.id的值,而不是试图构建一个li.id表达式(这将不像您正在尝试的那样工作):
UPDATE A
set A.a = (
select li.id
from A PP
JOIN B LI ON LI.Description = PP.Name
JOIN C L ON LI.List_Id = L.Id
where pp.id = A.a
and l.code = 'Code'
)https://stackoverflow.com/questions/43737754
复制相似问题