1

可能重复:
在mysql中相交

我做了一个用于检索公共数据的 php 项目。我在编写 MySQL 查询方面有点弱。我尝试了不同的方式。但我无法获得正确的输出

我的桌子是

 Id  Product-1   product-2
 -------------------------
 1      A           B
 2      B           C
 3      C           A
 4      E           B
 5      H           C

这是我的表。我想编写一个 MySQL 查询检索常见元素。eg: 这里 A,B 将来到 Product-1,Product-2, 我想检索 A,B 的公共元素元素 这里输出是 C

    3      C           A
    2      B           C

两行都可以包含 Product-1 或 product-2 中的 A、B

与 A,c 相同,共同元素是 B。如何为此编写查询...在 sql 中我们可以使用相交操作但是 MySQL 我不知道。请帮助我...

4

1 回答 1

2

我的建议是,不要将列用于使查询复杂化的双向关系,而是保持单向关系。

因此,而不是以下含义A to Cand C to A

Id  Product-1   Product-2
 -------------------------
 3      C           A

您实际上这样做是为了表示A to CC to A

Id  Product-1   Product-2
 -------------------------
 2      A           C
 3      C           A

然后,假设没有重复,您的查询就是这样:

SELECT Product-1
FROM tablename
WHERE Product-2 IN ('A', 'B')
GROUP BY Product-1
HAVING COUNT(*) = 2

但是,对于您的数据,以下查询将为 提供常见元素'A', 'B'

SELECT Product-1 FROM
((SELECT Product-1, Product-2
 FROM tablename)
UNION
(SELECT Product-2, Product-1
 FROM tablename)) t
WHERE Product-2 IN ('A', 'B')
GROUP BY Product-1
HAVING COUNT(*) = 2

我所做的是创建一个派生表,其中包含反转的关系副本,以便我将关系变为一种方式,然后正常进行。

于 2012-02-21T18:41:43.140 回答