MySQL CASE如何工作?
我知道SQL的CASE语法如下: 
 CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE 
 但是,我不明白这是如何工作的,可能是因为我正在考虑if是一个if语句。 
 如果我在表user_role有一个字段,例如包含“Manager”,“Part Time”等名称的字段,如何根据angular色生成具有不同编号的字段role_order 。 在这个例子中,“if user_role ='Manager'then role_order = 5”。 
请注意我正在寻找一个教男人如何钓鱼的答案,而不是给一个男人一条鱼的答案。
  CASE更像是一个switch语句。 它有两个可以使用的语法。 第一个让你使用你想要的任何比较语句: 
 CASE WHEN user_role = 'Manager' then 4 WHEN user_name = 'Tom' then 27 WHEN columnA <> columnB then 99 ELSE -1 --unknown END 
第二种风格是当你只考察一个价值时,更简洁一点:
 CASE user_role WHEN 'Manager' then 4 WHEN 'Part Time' then 7 ELSE -1 --unknown END 
  MySQL中的CASE既是一个声明,也是一个expression式 ,每个用法都略有不同。 
 作为一个声明, CASE工作方式非常类似switch语句,在存储过程中非常有用,正如本文档中所示(以上链接)所示: 
 DELIMITER | CREATE PROCEDURE p() BEGIN DECLARE v INT DEFAULT 1; CASE v WHEN 2 THEN SELECT v; WHEN 3 THEN SELECT 0; ELSE BEGIN -- Do other stuff END; END CASE; END; | 
然而,作为一个expression式,它可以用在从句中:
 SELECT * FROM employees ORDER BY CASE title WHEN "President" THEN 1 WHEN "Manager" THEN 2 ELSE 3 END, surname 
 另外,既作为语句又作为expression式,第一个参数可以省略,每个WHEN必须有条件。 
 SELECT * FROM employees ORDER BY CASE WHEN title = "President" THEN 1 WHEN title = "Manager" THEN 2 ELSE 3 END, surname 
 我提供了这个答案,因为另一个答案没有提到CASE可以同时作为一个语句和一个expression式。 它们之间的主要区别在于语句forms以END CASE结束,而expression式forms以END 。 
我想要一个简单的例子,我可以使用的情况下,这甚至不需要一个表。 这将返回奇数甚至取决于秒是奇数还是偶数
 SELECT CASE MOD(SECOND(NOW()),2) WHEN 0 THEN 'odd' WHEN 1 THEN 'even' END;