Mysql通过排序返回行位置

时间:2015-08-31 01:25:22

标签: php mysql sql count

ff表:

+-----------------------------+
+ value| name   |Asort        +
+-----------------------------+
+  111 | Alpha  |a            +
+  161 | Beta   |b            +
+  092 | Delta  |c            +
+  141 | Beta   |a            +
+  113 | Beta   |e            +
+  092 | Delta  |f            +
+  ...                        +
+  ... | more items           +
+-----------------------------+




+-----------------------------+
+ value| name |Asort          +
+-----------------------------+
+  141 | Beta |a              +
+  161 | Beta |b              +
+  113 | Beta |c              +
+  ...                        +
+  ... | more items(Beta)     +
+-----------------------------+

我想要回归" 3" as" 113"行位置,按名称分组,按Asort排序ASC

1 个答案:

答案 0 :(得分:0)

您需要使用变量来计算排名(row-number-in-mysql),因为mySql没有ROW_NUMBER

SQL Fiddle Demo

SELECT ff.*, 
       @rownum := @rownum + 1 AS rank
  FROM ff, 
       (SELECT @rownum := 0) r
WHERE name = 'Beta'  
ORDER BY Asort