首页 - 信息 - 确定是否存在多对多记录组合

确定是否存在多对多记录组合

2023-09-16 08:06
| 使用简单的解决方案似乎将是一项常见任务,但是我在StackOverflow和Google上都是空手而归。 场景是这样的:我有两个表A和B,它们共享多对多关系。因此,我有带有外键的表A_B,该表映射了A到B的记录关系。标准的东西。 我想弄清楚的是,如果已经存在匹配的相同关系,则在输入新记录(一个\'A \'记录和一个或多个\'B \'记录)之前如何查询表。目标是不重复数据。 最后,这些表将变得非常大,因此我需要尽可能降低开销。 更新 下面是我正在尝试的示例查询,以确定是否存在映射到B_id值3、4和5的现有A记录。它可以工作,但是如果有两个跨越3、4的不同A_id值,则返回假阳性。和5,例如: A_id = 1,B_id值= 2,3 A_id = 2,B_id值= 4,5,6
SELECT A_id, B_id
FROM A_B
GROUP BY
A_id HAVING
    B_id IN (3,4,5)
    AND
    COUNT(*) = 3
LIMIT 1
更新2 A_B表的主键是包含A_id和B_id的复合键。 A_B表定义一个唯一的组合键,包括A_id和B_id。 单个A由一个或多个B组成。 解决这个问题的一种更通用的方式:给定一组有限的B id值,我需要确定是否存在一个由该精确的B组组成的现有A。如果不是,则使用该组B创建新的A。 干杯