Many-to-many 数据库设计和重复数据删除中的关系
Many-to-many relations in DB design and deduplication
我有两个 M:M 表:countries (id,..)
和 neighbor_countries(origin_country_id, neighbor_country_id,...)
有没有办法删除 origin_country_id
和 neighbor_country_id
组合的重复数据?例如,USA=>Mexico
本质上与 Mexico=>USA
...
相同
我可以在我的代码中添加逻辑来检查这两种排列。我想知道 SQL 中是否有任何优雅的解决方案可以在单个查询中完成。
你会怎么做?如果美国和墨西哥是邻国,如何检查单个查询?
PS: 抱歉标题没用,我不知道如何正确地提出这个问题..
您可以在 where
中使用多个条件来完成
SELECT "Yes"
FROM countries l
JOIN neighbor_countries ON l.id = origin_country_id
JOIN countries r ON r.id = neighbor_country_id
WHERE (l.name = "USA" AND r.name = "Mexico") OR (l.name = "Mexico" AND r.name = "USA")
我有两个 M:M 表:countries (id,..)
和 neighbor_countries(origin_country_id, neighbor_country_id,...)
有没有办法删除 origin_country_id
和 neighbor_country_id
组合的重复数据?例如,USA=>Mexico
本质上与 Mexico=>USA
...
我可以在我的代码中添加逻辑来检查这两种排列。我想知道 SQL 中是否有任何优雅的解决方案可以在单个查询中完成。
你会怎么做?如果美国和墨西哥是邻国,如何检查单个查询?
PS: 抱歉标题没用,我不知道如何正确地提出这个问题..
您可以在 where
中使用多个条件来完成SELECT "Yes"
FROM countries l
JOIN neighbor_countries ON l.id = origin_country_id
JOIN countries r ON r.id = neighbor_country_id
WHERE (l.name = "USA" AND r.name = "Mexico") OR (l.name = "Mexico" AND r.name = "USA")