[英]Many-to-many join table, bi-directional relationships and data integrity
我有一个像这样的旧遗留表:
=====================
| 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 |
=====================
我需要某种算法(或工具),以便我可以识别和修复错误的数据。
那是一个相对简单的SQL查询。
SELECT product1,product2 ...在其镜像行不存在的地方。
那后一条就像
不存在(从* tbl中选择*作为镜像的镜像,其中MIRROR.product1 = externaltbl.product2和MIRROR.product2 = externaltbl.product1)
如果MySQL支持EXCEPT,则这是编写查询的另一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.