我有一个MySQL update语句,它试图重置两列: label和PersTrCode。(这是一个冷融合项目。)我用CASE语句来做这件事,但我似乎不能正确地理解语法--我总是出错。守则:
<cfquery name = 'nonull' datasource = "Moxart">
update FinAggDb
set Label = CASE
WHEN PersActIncOutg = 'I' && PersTrCode IS NULL THEN 'Total Income'
WHEN PersActIncOutg = 'O' && PersTrCode IS NULL THEN 'Total Expense'
WHEN PersActIncOutg IS NULL && PersTrCode IS NULL THEN ' '
ELSE PersTrCode
END
SET PersTrCode = CASE
WHEN PersTrCode IS NULL THEN 'Total'
ELSE PersTrCode
END
</cfquery>错误是通常提供信息的语句:
您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在PersTrCode为空时使用接近“SET PersTrCode = CASE”的语法,然后在第8行使用“Total”。
不允许使用多个CASE语句吗?或者谁能告诉我怎么解决这个问题?
发布于 2015-10-27 18:11:02
update语句只有一个set子句,要更新的各个列用逗号分隔。另外,请注意使用and而不是&&更常见,尽管两者在MySQL中都是有效的:
update FinAggDb
set Label = CASE
WHEN PersActIncOutg = 'I' AND PersTrCode IS NULL THEN 'Total Income'
WHEN PersActIncOutg = 'O' AND PersTrCode IS NULL THEN 'Total Expense'
WHEN PersActIncOutg IS NULL AND PersTrCode IS NULL THEN ' '
ELSE PersTrCode
END
, -- comma here, not a second "set" clause
PersTrCode = CASE
WHEN PersTrCode IS NULL THEN 'Total'
ELSE PersTrCode
ENDhttps://stackoverflow.com/questions/33375441
复制相似问题