gpt4 book ai didi

mysql - 枚举或计数行 JOIN MySql

转载 作者:行者123 更新时间:2023-11-29 23:10:28 26 4
gpt4 key购买 nike

我有两个表,taskstep

任务表示例

^ 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 |

我想从任务中枚举 Active 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 |

我读到another article关于 session 变量,但我无法使其工作。

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

这是一些 SQLFiddle http://www.sqlfiddle.com/#!2/71316/2

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

最佳答案

你比较的是错误的东西:

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

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

关于mysql - 枚举或计数行 JOIN MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28098861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com