枚举或计数加入MySql的行

枚举或计数加入MySql的行,mysql,group-by,Mysql,Group By,我有两个表,task和step 任务的示例表 ^ TaskID ^ OperID ^ StepID ^ Status ^ | 10 | 10 | 10 | Finished | | 11 | 10 | 20 | Active | | 12 | 20 | 10 | Active | | 13 | 30 | 10 | Finished | | 14

我有两个表,
task
step

任务的示例

^ TaskID  ^ OperID  ^ StepID  ^ Status    ^
| 10      | 10      | 10      | Finished  |
| 11      | 10      | 20      | Active    |
| 12      | 20      | 10      | Active    |
| 13      | 30      | 10      | Finished  |
| 14      | 40      | 10      | Finished  |
| 15      | 10      | 30      | Finished  |
| 16      | 30      | 20      | Active    |
| 17      | 40      | 20      | Active    |
| 18      | 10      | 40      | Active    |
| 19      | 30      | 30      | Active    |
步骤的示例
表格

^ StepID  ^ StepName  ^
| 10       | Step1     |
| 20       | Step2     |
| 30       | Step3     |
| 40       | Step4     |
我想从Task中枚举活动StepName,按OperID分组,换句话说,我需要这样的输出

^ OperID  ^ StepName  ^ OrderID  ^
| 10      | Step2     | 1       |
| 10      | Step3     | 2       |
| 10      | Step4     | 3       |
| 20      | Step1     | 1       |
| 30      | Step2     | 1       |
| 30      | Step2     | 2       |
| 40      | Step2     | 1       |
我读了关于会话变量的内容,但我无法让它工作

SELECT
   T.OperID,
   S.StepName,
   @Order := IF(@StepName = S.StepName, @Order + 1, 1) AS 'Order',
   @StepName := S.StepName 
FROM
   task AS T
   INNER JOIN step AS S ON S.StepID = T.StepID
WHERE T.Status = 'Active'
ORDER BY OperID
这是一些小提琴


我不知道我做错了什么。欢迎提供任何帮助。

您在比较错误的东西:

@Order := IF(@Order = S.StepName, @Order + 1, 1) AS 'Order',
             ^^^^^---should probably be @StepName

现在,您正在将正在生成的整数值与“StepName”中的字符串进行比较。

由于错误而编辑的查询(感谢Marc B),但它也不起作用。