Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 Case表达式与Case语句_Mysql_Case - Fatal编程技术网

Mysql Case表达式与Case语句

Mysql Case表达式与Case语句,mysql,case,Mysql,Case,MySQL中a和a的区别是什么?什么时候可以使用它们,使用其中一个比另一个有什么好处 Case语句语法: CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE 大小写表达式语法: CASE WHEN [condition] THEN result [WHEN [conditi

MySQL中a和a的区别是什么?什么时候可以使用它们,使用其中一个比另一个有什么好处

Case语句语法:

CASE
  WHEN search_condition THEN statement_list
  [WHEN search_condition THEN statement_list] ...
  [ELSE statement_list]
END CASE
大小写表达式语法:

CASE 
  WHEN [condition] THEN result 
  [WHEN [condition] THEN result ...] 
  [ELSE result] 
END
它们看起来几乎相同,但Case语句的初始描述是存储程序的Case语句实现了一个复杂的条件构造。

那么,一个用于存储程序而在正常查询中不可用,这有什么显著区别呢?我在一个我正在玩的查询上尝试了这个,但失败了-。如果是这样,为什么不在存储程序中使用case表达式呢


由于它们看起来是相同的,所以还有其他语法上的差异需要注意吗?

表达式的大小写计算结果为一个值,即它用于根据某些条件计算一组结果中的一个。
例如:


CASE
语句根据某些条件执行一组语句中的一个。
例如:


您可以看到它们的相似性,但语句的计算结果不是值,可以单独使用,而表达式需要是表达式的一部分,例如查询或赋值。您不能在查询中使用该语句,因为查询不能包含语句,只能包含需要求值的表达式(从某种意义上说,查询本身就是一条语句),例如,
SELECT CASE WHEN condition THEN UPDATE table SET something;结束案例
毫无意义。

描述得很好,我现在明白了区别。我唯一的困惑是何时以及如何使用Case语句,用您编写的语句创建php查询是否有效?我假设使用它的最佳方式是,它跟随一个查询,在这个查询中,您将一个变量设置为另一个查询的结果。例如,
选择@action:=action from table limit 1
,然后在@action='update'时查询
案例,然后更新sometable SET column=条件所在的值
这样行吗?
CASE
语句只能用于数据库中定义的过程和函数。不能将
CASE
语句作为PHP脚本中的查询执行。
SELECT CASE
    WHEN type = 1 THEN 'foo'
    WHEN type = 2 THEN 'bar'
    ELSE 'baz'
END AS name_for_numeric_type
FROM sometable`
CASE
    WHEN action = 'update' THEN
        UPDATE sometable SET column = value WHERE condition;
    WHEN action = 'create' THEN
        INSERT INTO sometable (column) VALUES (value);
END CASE