枚举或计数加入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),但它也不起作用。