sql case when和ORDER BY执行顺序
时间: 2023-06-28 10:04:57 浏览: 238
SQL的执行顺序一般是这样的:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY。
在使用CASE WHEN语句时,它会被视为SELECT语句的一部分,因此它会在ORDER BY之前执行。这意味着你可以在CASE WHEN语句中使用ORDER BY子句,但是ORDER BY子句不会影响CASE WHEN语句。
举个例子:
```
SELECT
CASE
WHEN column1 = 'value1' THEN 'A'
WHEN column1 = 'value2' THEN 'B'
ELSE 'C'
END AS column_alias
FROM table
ORDER BY column1 DESC;
```
在这个例子中,CASE WHEN语句会在ORDER BY之前执行,因此它会根据条件给column1赋值,然后再按照column1的值进行排序。
需要注意的是,如果你在CASE WHEN语句中使用了聚合函数,如SUM、AVG等,那么它会在GROUP BY之后执行。
相关问题
SQL中CASE WHEN和GROUP BY执行顺序
在SQL中,执行顺序是先执行FROM子句中的表,然后执行WHERE子句的筛选,接着执行GROUP BY分组,然后执行SELECT子句中的表达式和函数,最后执行ORDER BY排序。
在此基础上,CASE WHEN语句的执行顺序是在SELECT子句之后,但在ORDER BY之前。也就是说,CASE WHEN语句可以用于SELECT子句中的表达式和函数,但它们不会影响GROUP BY分组。
因此,如果您想在GROUP BY分组之前使用CASE WHEN语句进行筛选或计算,可以使用子查询或通用表表达式(CTE)来实现。
sql CASE WHEN
SQL中的CASE WHEN语句是一种条件表达式,它可以根据条件返回不同的结果。它有两种形式:一种是基于值的形式,另一种是基于条件的形式。基于值的形式如下:
```
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
```
基于条件的形式如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
```
其中,expression是要比较的表达式,value1、value2等是expression可能取到的值,result1、result2等是对应的结果。condition1、condition2等是要判断的条件,result1、result2等是对应的结果。default_result是当没有匹配到任何条件时返回的默认结果。
CASE WHEN语句可以用于SELECT、WHERE、ORDER BY等语句中,可以根据需要进行灵活使用。
阅读全文