MySQL中多个案例的语法
我有一个MySQL更新语句,它试图重置两列:label和PersTrCode。(这是在一个Coldfusion程序中)我正在使用CASE语句进行此操作,但我似乎无法获得正确的语法--我一直得到一个错误。守则:MySQL中多个案例的语法,mysql,sql,sql-update,syntax-error,case,Mysql,Sql,Sql Update,Syntax Error,Case,我有一个MySQL更新语句,它试图重置两列:label和PersTrCode。(这是在一个Coldfusion程序中)我正在使用CASE语句进行此操作,但我似乎无法获得正确的语法--我一直得到一个错误。守则: <cfquery name = 'nonull' datasource = "Moxart"> update FinAggDb set Label = CASE WHEN PersActIncOutg = 'I' && PersTrCode IS NULL
<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>
更新FinAggDb
设置标签=大小写
当PersActIncOutg='I'&&PersTrCode为空时,则为'Total Income'
当PersActIncOutg='O'&&PersTrCode为空时,则为'Total Expense'
当PersActIncOutg为空时&&PersTrCode为空,则“”
ELSE PersTrCode
结束
设置PersTrCode=CASE
当PersTrCode为空时,则为“总计”
ELSE PersTrCode
结束
错误是通常的信息性陈述:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第8行的“SET PersTrCode=CASE当PersTrCode为NULL时,然后是“Total”或“ELSE PersTrCode”附近使用的正确语法
是否不允许使用多个
CASE
语句?或者有人能告诉我如何解决这个问题吗?一个update语句只有一个set
子句,要更新的各个列之间用逗号隔开。另外,请注意,使用和
比使用和&
更常见,尽管这两种方法在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
你完全正确,我只是没有看到。