在MySQL中,Case Expression和Case Statement有什么区别?它们可以在什么时候使用?使用其中之一有什么好处?
Case Statement语法:
这两者看起来几乎相同,但是 Case Statements 的初始描述是“存储程序的 CASE 语句实现了一个复杂的条件结构”。那么,重要的区别是其中一个用于存储程序而不能在普通查询中使用吗?我在正在玩耍的查询上尝试了一下,但失败了-sqlfiddle。如果是这种情况,为什么不只在存储程序中使用 Case Expression 呢?还有其他需要注意的语法差异吗,因为它们似乎是相同的?
Case Statement语法:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
Case Expression 语法:
CASE
WHEN [condition] THEN result
[WHEN [condition] THEN result ...]
[ELSE result]
END
这两者看起来几乎相同,但是 Case Statements 的初始描述是“存储程序的 CASE 语句实现了一个复杂的条件结构”。那么,重要的区别是其中一个用于存储程序而不能在普通查询中使用吗?我在正在玩耍的查询上尝试了一下,但失败了-sqlfiddle。如果是这种情况,为什么不只在存储程序中使用 Case Expression 呢?还有其他需要注意的语法差异吗,因为它们似乎是相同的?
select @action:=action from table limit 1
然后查询CASE WHEN @action = 'update' THEN UPDATE sometable SET column = value WHERE condition;
是否可行? - mrmrybCASE
语句只能在存储例程中使用,即在数据库中定义的过程和函数中。您不能在PHP脚本中将CASE
语句作为查询执行。 - lanzz