我有一个表(假设prod_config),其中包含以下数据-
| 产品ID|配置ID|配置类型|
| --------------|--------------|--------------|
| 九八五六|1|二|
| 九八五五|九十三|1|
| 九八五五|九十二|二|
| 九八五五|九十一|二|
| 九八五四|九十三|1|
| 九八五四|九十二|二|
| 九八五四|九十一|二|
| 九八四九|九十三|1|
| 九八四九|九十二|二|
| 九八五零|九十一|二|
| 九八五二|八十八|1|
| 九八五二|九十|二|
| 九八五三|一百|二|
这种关系是这样的
*Prod_Id可Map到单个或多个**Config_Id(*Config_Type 1或2)
- 如果ProdId出现一次,则ConfigType将始终为2
- 如果ProdId多次出现,则只有一行ConfigType为1
我需要找到下面的结果有--
- 所有ProdId只有一次出现
- 对于所有出现多次的ProdIds,只选择Config_Type为1的行
产品ID | 配置ID | 配置类型 |
---|---|---|
九八五六 | 1 | 二 |
九八五五 | 九十三 | 1 |
九八五四 | 九十三 | 1 |
九八四九 | 九十三 | 1 |
九八五零 | 九十一 | 二 |
九八五二 | 八十八 | 1 |
九八五三 | 一百 | 二 |
4条答案
按热度按时间pepwfjgg1#
你可以使用一个窗口函数来得到你需要的结果-
yqhsw0fo2#
小提琴
子查询t2为每个Prod_Id选择最小Config_Id,其中Config_Type=1。
如果给定的Prod_Id没有Config_Type=1的行,则子查询选择具有最小Config_Id的行。
外部查询将原始表与Prod_Id和Config_Id上的子查询联接。
连接结果中的Prod_Id为null,这意味着这些不是最终结果的一部分
bzzcjhmw3#
这里有一个相当容易理解的:
但进一步考虑,对于给定的多示例prod_id,只能存在一个config_type=1,因此我们可以将其简化为:
gorkyyrv4#
您可以使用下面的查询实现您想要的输出
在此查看演示