mysql排序

由于mysql没有row_number()方法,只能通过其它方法来进行排序,以下为使用变量来实现排序

示例1:以col1分组,col2正序排序

SET @i=0;
SET @col1='';
SELECT col1
     , col2 
     , @i:=IF(@col1=col1, @i+1, 1) AS seq
     , @col1:=col1
FROM (
  SELECT 'a' AS col1, 1 AS col2
  UNION ALL
  SELECT 'b' AS col1, 2 AS col2
  UNION ALL
  SELECT 'c' AS col1, 3 AS col2
  UNION ALL
  SELECT 'a' AS col1, 4 AS col2
)a
ORDER BY col1, col2
;
输出结果:
col1      col2     seq  @col1:=col1  
------  ------  ------  -------------
a            1       1  a            
a            4       2  a            
b            2       1  b            
c            3       1  c                   

示例2:以col1分组,col2倒序排序

SET @i=0;
SET @col1='';
SELECT col1
     , col2 
     , @i:=IF(@col1=col1, @i+1, 1) AS seq
     , @col1:=col1
FROM (
  SELECT 'a' AS col1, 1 AS col2
  UNION ALL
  SELECT 'b' AS col1, 2 AS col2
  UNION ALL
  SELECT 'c' AS col1, 3 AS col2
  UNION ALL
  SELECT 'a' AS col1, 4 AS col2
)a
ORDER BY col1, col2 DESC
;
输出结果:
col1      col2     seq  @col1:=col1  
------  ------  ------  -------------
a            4       1  a            
a            1       2  a            
b            2       1  b            
c            3       1  c          
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容