Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中多个案例的语法_Mysql_Sql_Sql Update_Syntax Error_Case - Fatal编程技术网

MySQL中多个案例的语法

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

我有一个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>

更新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

你完全正确,我只是没有看到。