【问题标题】:Compare all records of a n-n relationship比较 n-n 关系的所有记录
【发布时间】:2019-06-13 16:27:31
【问题描述】:

我有三张桌子,A、B 和 C

表A和B有一个ID和其他字段,表C是A和B的n-n关系(C只包含A和B的IDS,主键(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;

【问题讨论】:

    标签: mysql sql compare


    【解决方案1】:

    精确匹配的最简单方法是使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-28
      • 2021-07-18
      • 2014-12-27
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      相关资源
      最近更新 更多