gpt4 book ai didi

mysql - SQL 语句返回应通过的步骤列表中的当前步骤以及进程是否已结束

转载 作者:行者123 更新时间:2023-11-29 13:22:02 24 4
gpt4 key购买 nike

 Name  | Position | Approved
----------------------------
Step 1 | 1 | 1
Step 2 | 2 | 0
Step 3 | 3 | -1
Step 4 | 4 | -1

我有一个包含上述数据的数据库表。它存储与请求相关的各个步骤。步骤按 position 列排序。因此我能够知道哪一步在哪一步之后。

是否可以有一个SQL语句返回当前步骤以及请求是否已结束

当前步骤的算法

  1. 选择按位置升序排列的所有步骤。
  2. 如果步骤已批准为0,则返回当前步骤
  3. 如果步骤已批准为 1 并且是最后一步,则返回当前步骤
  4. 如果步骤已批准为 -1,并且(第一步或前一步已批准为 1),则返回当前步骤

请求算法已结束

  1. 如果当前步骤为 -1,则请求结束
  2. 如果当前步骤有 0 或 1,则请求已结束

对于上表,当前步骤是阶段 2,请求已结束。

这可以使用 SQL 来实现吗?任何帮助将不胜感激

最佳答案

以下SQLFiddle标识当前步骤以及请求是否已结束。但是,由于我无法识别最新的请求,因此我省略了第二个算法中的最后两个条件。

 select *
,case when t1.approved=0 then 'ended'
when t1.approved=-1 then 'not ended'
end as stat
from (select Name, Position, Approved from table1 t2
where
(case when approved=0 then 1
when position =(select max(position) from table1) and approved=1 then 1
when (position= 1 and approved=-1) or (approved=-1 and 1=(select approved from table1 t1 where t1.position=t2.position-1))then 1
else 0
end) =1
order by position)t1
limit 1

关于mysql - SQL 语句返回应通过的步骤列表中的当前步骤以及进程是否已结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683002/

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