【发布时间】:2021-11-30 11:09:04
【问题描述】:
场景: 匹配算法已识别 ID1 AND ID2 已匹配。我需要对匹配做进一步分析。为此,我需要减少输出中的行数并正确排序。
这个输入只是样本和子集。拥有数千条实际记录使这项任务变得困难。
输入:
| ID1 | NAME1 | ID2 | NAME2 |
|---|---|---|---|
| 222 | SIM | 333 | SIM |
| 111 | SAM | 222 | SIM |
| 111 | SAM | 333 | SIM |
| 111 | SAM | 444 | SOM |
| 111 | SAM | 555 | SAM |
| 222 | SIM | 444 | SOM |
| 222 | SIM | 555 | SAM |
| 333 | SIM | 444 | SOM |
| 444 | SOM | 555 | SAM |
| 013 | AAA | 014 | BBB |
| 021 | SUB | 111 | SAM |
| 010 | CCC | 011 | DDD |
| 023 | SOB | 333 | SIM |
预期输出:
| ID | NAME |
|---|---|
| 111 | SAM |
| 222 | SIM |
| 333 | SIM |
| 444 | SOM |
| 555 | SAM |
| 021 | SUB |
| 023 | SOB |
| 013 | AAA |
| 014 | BBB |
| 010 | CCC |
| 011 | DDD |
我需要确保输出应该有 ID 应该有不同的 ID1 和 ID2 组合的记录,这仍然很好,因为我可以做不同的和联合。
棘手的部分是确保输出中的数据排序。我需要按顺序保留相似的行。
示例:
111,222,333,444,555,021,023 在 ID1 和 ID2 中具有相似的匹配 ID,必须一起排序。在这个组中,排序顺序无关紧要,他们需要在一起。类似地,可能有很多这样的群体。
其余的只要只有一对,只需将它们排序在一起,如 013,014 和 010,011 等
谁能帮我解决这个问题?
【问题讨论】:
-
请不要标记冲突的 RDBMS。只需标记您真正正在使用的那个。
-
除非我遗漏了什么...
SELECT t.ID1 AS ID, t.NAME1 AS Name FROM TheTable t UNION ALL SELECT t.ID2 AS ID, t.NAME2 AS Name FROM TheTable t -
实际上提到的问题在于排序。希望 id1 和 id2 中具有匹配 id 的数据放在一起。 A-M,E-F,M-C 应该 A,M,C 一起排序,因为 M 已经匹配并且 E,F 一起排序
-
看起来你想要一个graph components algorithm
标签: sql