查找具有相同相关行的行

时间:2018-03-29 09:11:17

标签: mysql sql

我在主表A中包含表B中的相关数据(属性)和数据透视表C,其中包含表A中行的属性。

表:

A:
id | name

B:
id | attr_name | value

C: 
table_a_id | table_b_id

当然,表A中的任何行都可以具有许多属性。

我的问题是: 当我从表A中获取任何行时,我需要获得具有完全相同属性的其他行。是否可以使用一个查询执行此操作?

例如:

A:
id | name
1  | first item
2  | second item
3  | third item
4  | fourth item
5  | fifth item

B:
id | attr_name | value
1  | color     | blue
2  | color     | green
3  | length    | 10
4  | length    | 5


C: 
table_a_id | table_b_id
1          | 1
1          | 3
2          | 1
2          | 4
3          | 3
4          | 1
4          | 3
5          | 1
5          | 3

当我从表A得到第1行(第1行有属性1和3)时,我应该只找到其他行4,5(因为只有4和5的属性1和3-与行1完全相同)。

当我得到第5行时,我希望找到其他行1,4(相同的属性)。

因此,我需要查询才能找到与所选行具有完全相同属性的行。

1 个答案:

答案 0 :(得分:0)

您可以通过基于外键将表相互连接来实现:

SELECT
  A1.*, B1.*
FROM
  A AS A1
  INNER JOIN C as C1
    ON A1.id=C1.table_a_id
  INNER JOIN  B AS B1
    C1.table_b_id=B1.id