我有一张表,其中包含来自不同来源(每个来源一行)的映射,针对三种不同的标识符类型(idtype1 到 idtype3),其中 idtype1 具有最高优先级,idtype3 具有最低优先级。我需要合并和整合所有相关映射,以便更好地了解它们之间的关系。
初始映射表如下所示:
id类型1 | idtype2 | idtype3 |
---|---|---|
无效的 | b | 丙 |
无效的 | 无效的 | 丙 |
无效的 | b | d |
一个 | 无效的 | d |
无效的 | b | 无效的 |
十 | b | 无效的 |
现在,由于所有 id 类型都以某种方式相互关联,即c关联到b ,而b 又关联到d,而 d 又关联到a,现在,由于x与b相关,因此所有类型本质上都相互关联。我应该能够将信息整合到以下结果中:
id类型1 | idtype2 | idtype3 |
---|---|---|
一个 | b | 丙 |
一个 | b | d |
十 | b | 丙 |
十 | b | d |
示例 2:
id类型1 | idtype2 | idtype3 |
---|---|---|
无效的 | 无效的 | 丙 |
无效的 | b | 丙 |
无效的 | 无效的 | d |
一个 | 无效的 | d |
无效的 | b | d |
无效的 | 无效的 | 埃 |
无效的 | b | 埃 |
无效的 | b | 无效的 |
我应该将其归结为:
id类型1 | idtype2 | idtype3 |
---|---|---|
一个 | b | 丙 |
一个 | b | d |
一个 | b | 埃 |
有人能帮忙想出一个有效的逻辑吗?
编辑:
该表可以有多个这样的组合,即两个示例可以同时以不同的值出现。
CREATE TABLE mappings (idtype1 VARCHAR(10),idtype2 VARCHAR(10),idtype3 VARCHAR(10))
INSERT mappings
VALUES
(null,null,'c'),
(null,'b','c'),
(null,null,'d'),
('a',null,'d'),
(null,'b','d'),
(null,null,'e'),
(null,'b','e'),
(null,'b',null),
(null,'q','r'),
(null,null,'r'),
(null,'q','s'),
('p',null,'s'),
(null,'q',null),
('t','q',null)
输出应该是:
id类型1 | idtype2 | idtype3 |
---|---|---|
一个 | b | 丙 |
一个 | b | d |
十 | b | 丙 |
十 | b | d |
页 | 问 | r |
页 | 问 | s |
页 | 问 | 吨 |