我有一张旧的遗产表:
=====================
| product1 | product2 |
=====================
| 1 | 2 |
| 2 | 1 |
| 3 | 4 |
| 4 | 5 |
| 5 | 3 |
=====================
这是一张设计糟糕的桌子,我知道,但它必须留下来。该表的目的是存储产品之间的关系。规则是每个产品应该引用每个相似的产品,反之亦然。假设示例数据是完整数据集,前两行是正确的 - 1与2的关系,2与1的关系。但是,最后三行是混乱。表示这些产品关系的正确方法是:
=====================
| product1 | product2 |
=====================
| 3 | 4 |
| 3 | 5 |
| 4 | 3 |
| 4 | 5 |
| 5 | 3 |
| 5 | 4 |
=====================
我需要的是某种算法(或工具),以便识别和修复不正确的数据。
答案 0 :(得分:2)
这是一个相对简单的SQL查询。
SELECT product1,product2 ... 它的镜像行不存在。
后一个条款就像
不存在( SELECT * FROM tbl AS MIRROR 在哪里MIRROR.product1 = outertbl.product2 AND MIRROR.product2 = outertbl.product1 )
如果MySQL支持EXCEPT,那么这是编写查询的另一种方式。