我有一个 MySQL 更新语句,它试图重置两列:label 和 PersTrCode。 (这是在 Coldfusion 程序中。)我正在使用 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>
错误是通常的信息性陈述:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET PersTrCode = CASE WHEN PersTrCode IS NULL THEN 'Total' ELSE PersTrCode ' at line 8
不允许使用多个CASE
语句吗?或者有人可以告诉我如何解决这个问题吗?
最佳答案
更新语句只有一个 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
END
关于mysql - MySQL 中多种情况的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375441/