如何根据指定类型数量,筛选未在Usage表中使用的Codes表唯一码
数据库查询需求说明
现有表结构及数据
AvailableCodes表(存储唯一code,同一类型可对应多个code)
| id | code | type |
|---|---|---|
| 1 | aa1 | type_1 |
| 2 | bb1 | type_2 |
| 3 | cc1 | type_3 |
| 4 | cc2 | type_3 |
| 5 | bb2 | type_2 |
| 6 | bb3 | type_2 |
| 7 | cc3 | type_3 |
| 8 | cc4 | type_3 |
| 9 | aa2 | type_1 |
| 10 | aa3 | type_1 |
Usage表(存储code的使用记录,同一code可存在多条记录)
| code | some_information1 | some_information2 |
|---|---|---|
| aa1 | some_info1 | some_info2 |
| cc2 | some_info1 | some_info2 |
| cc2 | some_info1 | some_info2 |
| bb1 | some_info1 | some_info2 |
| aa1 | some_info1 | some_info2 |
查询规则
给定一个包含类型-需求数量的键值对数组,需返回满足以下条件的唯一code列表:
- 所选code未出现在
Usage表中; - 各类型返回的code数量严格匹配数组指定的需求;
- 结果可按
id升序排列; - 若任意类型的可用未使用code数量无法满足需求,直接返回空集。
示例1:合法需求
输入需求:
{ "type_1": 2, "type_3": 1 }
预期结果
| code | type |
|---|---|
| aa2 | type_1 |
| aa3 | type_1 |
| cc1 | type_3 |
示例2:无法满足的需求
输入需求:
{ "type_1": 3, "type_3": 1 }
预期结果
空集(type_1仅剩余2个未使用的可用code,无法满足3个的需求)
内容的提问来源于stack exchange,提问作者pileup
相关产品推荐
相关产品推荐

