SELECT
id,
CASE
WHEN sale_rank = 0 THEN
"LV0"
WHEN sale_rank = 1 THEN
"LV1"
WHEN sale_rank = 2 THEN
"LV2"
WHEN sale_rank = 3 THEN
"LV3"
WHEN sale_rank = 4 THEN
"LV4"
WHEN sale_rank = 5 THEN
"LV5"
WHEN sale_rank = 6 THEN
"LV6"
ELSE 'wrong'

END as sale_rank
FROM
users
LIMIT 100;

 

CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。 
case when_mysql 
case when_mysql首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下: 
case when_mysql 
case when_mysqlSELECT <myColumnSpec> = 
case when_mysqlCASE 
case when_mysqlWHEN <A> THEN <somethingA> 
case when_mysqlWHEN <B> THEN <somethingB> 
case when_mysqlELSE <somethingE> 
case when_mysqlEND  
case when_mysql 
case when_mysql在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子: 
case when_mysql 
case when_mysqlUSE pubs 
case when_mysqlGO 
case when_mysqlSELECT 
case when_mysql    Title, 
case when_mysql    'Price Range' = 
case when_mysql    CASE 
case when_mysql        WHEN price IS NULL THEN 'Unpriced' 
case when_mysql        WHEN price < 10 THEN 'Bargain' 
case when_mysql        WHEN price BETWEEN 10 and 20 THEN 'Average' 
case when_mysql        ELSE 'Gift to impress relatives' 
case when_mysql    END 
case when_mysqlFROM titles 
case when_mysqlORDER BY price 
case when_mysqlGO  
case when_mysql 
case when_mysql这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE: 
case when_mysql 
case when_mysqlSELECT 'Number of Titles', Count(*) 
case when_mysqlFROM titles 
case when_mysqlGROUP BY 
case when_mysql    CASE 
case when_mysql        WHEN price IS NULL THEN 'Unpriced' 
case when_mysql        WHEN price < 10 THEN 'Bargain' 
case when_mysql        WHEN price BETWEEN 10 and 20 THEN 'Average' 
case when_mysql        ELSE 'Gift to impress relatives' 
case when_mysql    END 
case when_mysqlGO  
case when_mysql 
case when_mysql你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示: 
case when_mysql 
case when_mysqlUSE pubs 
case when_mysqlGO 
case when_mysqlSELECT 
case when_mysql    CASE 
case when_mysql        WHEN price IS NULL THEN 'Unpriced' 
case when_mysql        WHEN price < 10 THEN 'Bargain' 
case when_mysql        WHEN price BETWEEN 10 and 20 THEN 'Average' 
case when_mysql        ELSE 'Gift to impress relatives' 
case when_mysql    END AS Range, 
case when_mysql    Title 
case when_mysqlFROM titles 
case when_mysqlGROUP BY 
case when_mysql    CASE 
case when_mysql        WHEN price IS NULL THEN 'Unpriced' 
case when_mysql        WHEN price < 10 THEN 'Bargain' 
case when_mysql        WHEN price BETWEEN 10 and 20 THEN 'Average' 
case when_mysql        ELSE 'Gift to impress relatives' 
case when_mysql    END, 
case when_mysql    Title 
case when_mysqlORDER BY 
case when_mysql    CASE 
case when_mysql        WHEN price IS NULL THEN 'Unpriced' 
case when_mysql        WHEN price < 10 THEN 'Bargain' 
case when_mysql        WHEN price BETWEEN 10 and 20 THEN 'Average' 
case when_mysql        ELSE 'Gift to impress relatives' 
case when_mysql    END, 
case when_mysql    Title 
case when_mysqlGO  
case when_mysql 
case when_mysql注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。