①用途:mysql
将空值替换成其余值sql
返回第一个非空值express
②表达式:函数
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即中止并返回该值。若是全部的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。post
③实例:spa
ROW_NUMBER()3d
说明:返回结果集分区内行的序列号,每一个分区的第一行从1开始。
语法:ROW_NUMBER () OVER ([ <partition_by_clause> ] <order_by_clause>) 。
备注:ORDER BY 子句可肯定在特定分区中为行分配惟一 ROW_NUMBER 的顺序。
参数:<partition_by_clause> :将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。
<order_by_clause>:肯定将 ROW_NUMBER 值分配给分区中的行的顺序。
返回类型:bigint 。code
应用实例blog
/*以FoodPrice列排序并显示排序后的行号*/ SELECT ROW_NUMBER() OVER(ORDER BY FoodPrice DESC) AS RowId,* FROM dbo.Food
/*以FoodType分组,而后以FoodPrice排序并显示所在分组的相应行号*/ SELECT ROW_NUMBER() OVER(PARTITION BY FoodType ORDER BY FoodPrice DESC) AS RowId,* FROM dbo.Food
/*以FoodType分组,而后以FoodPrice排序并显示所在分组的相应行号,若是排序字段字相等则显示相同的行号, 并跳过所在的真实行号*/ SELECT RANK() OVER(PARTITION BY FoodType ORDER BY FoodPrice) AS RowID,* FROM dbo.Food
/*以FoodType分组,而后以FoodPrice排序并显示所在分组的相应行号,若是排序字段字相等则显示相同的行号, 忽略相同行号,依次递增*/ SELECT DENSE_RANK() OVER(PARTITION BY FoodType ORDER BY FoodPrice) AS RowID,* FROM dbo.Food
如图实际使用排序
-- 按状态分组,而后按单价降序展现 select row_number() over(partition by t1.order_status order by t1.goods_price desc) as rank,t1.* from orderinfo t1
-- 按状态分组,而后按单价升序展现 select row_number() over(partition by t1.order_status order by t1.goods_price asc )as rank,t1.* from orderinfo t1
-- 按状态分组,而后取出该分组中价钱最的数据 select * from ( select row_number() over(partition by t1.order_status order by t1.goods_price desc ) as rank,t1.* from orderinfo t1) ta where ta.rank=1;