gpt4 book ai didi

sql - 用于从多个优先级队列中获取值的 SELECT 语句

转载 作者:搜寻专家 更新时间:2023-10-30 23:33:10 24 4
gpt4 key购买 nike

我正在使用 Oracle 数据库表来存储可以有多个事件的订单,并且每个事件都必须根据 version 字段按顺序处理。

该表的基本结构包含 3 列:Order ID;上述版本;和 Processed,一个简单的 1/0 boolean 标志,用于了解订单版本是否已处理。

所述订单的处理是批量执行的,所以我正在努力编写一个 SELECT 语句,为每个订单 ID 获取单个结果集上的下一个未处理版本。

有人知道如何实现吗?

最佳答案

就是这样:

SQL Fiddle

Oracle 11g R2 架构设置:

查询 1:

SELECT ID, MIN(version) , field1, field2
FROM t
WHERE processed = 0
GROUP BY ID, field1, field2

Results :

| ID | MIN(VERSION) |               FIELD1 |               FIELD2 |
|----|--------------|----------------------|----------------------|
| 1 | 2 | field1 char(20) | field2 char(20) |
| 2 | 5 | field1 char(20) | field2 char(20) |

查询 2:

select id, version, processed, field1, field2 from t

Results :

| ID | VERSION | PROCESSED |               FIELD1 |               FIELD2 |
|----|---------|-----------|----------------------|----------------------|
| 1 | 1 | 1 | field1 char(20) | field2 char(20) |
| 1 | 2 | 0 | field1 char(20) | field2 char(20) |
| 1 | 3 | 0 | field1 char(20) | field2 char(20) |
| 2 | 5 | 0 | field1 char(20) | field2 char(20) |
| 2 | 10 | 0 | field1 char(20) | field2 char(20) |
| 3 | 4 | 1 | field1 char(20) | field2 char(20) |

顺便说一句,不要忘记在 (processed,version) 上添加一个 B-TREE 索引,它会对这个查询有帮助 ;)

关于sql - 用于从多个优先级队列中获取值的 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46348613/

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