gpt4 book ai didi

mysql - 比较 n-n 关系的所有记录

转载 作者:行者123 更新时间:2023-11-29 15:54:17 24 4
gpt4 key购买 nike

我有三个表,A、B 和 C

表A和B有ID和其他字段,表C是A和B的n-n关系(C只包含A和B的ID,具有主键(id_a,id_b)和外键)。

现在我需要验证 A 的一行是否与 A 的另一行具有相同的关联。

示例

A = [id_a] = [1,2,3,4]
B = [id_b] = [1,2,3,4]

C = [id_a, id_b] = [[1,1],[1,3],[2,1],[2,3],[3,3]]

在本例中,我只需要提取 id_a 为 1 和 2 的记录,因为它们都与 B 的同一行(id_b 1 和 3)关联。

id_a=3 与 id_a=1/2 不同,因为它与 id_b=1 没有关联

这适用于新的 Ubuntu 18.04 服务器,运行 MySQL、PHP 7(LAMP 堆栈)

id_a=1 的示例

SELECT id_a
FROM C
WHERE id_b IN (SELECT id_b FROM B WHERE id_a=1)
GROUP BY id_a;

最佳答案

精确匹配的最简单方法是使用group_concat():

select c.id_a
from (select c.id_a, group_concat(c.id_b order by c.id_b) as id_bs
from c
group by c.id_a
) c join
(select group_concat(c.id_b order by c.id_b) as id_bs
from c
where c.id_a = @id_a
) ac
on c.id_bs = ac.id_bs

关于mysql - 比较 n-n 关系的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56584874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com