查找具有两个匹配字段的mySQL行

时间:2018-11-29 22:31:32

标签: mysql

我正在尝试编写一个查询,该查询将返回具有两个匹配字段的行。

|-------------|-------------|----------|
|      id     |   field 1   |  field 2 |
|-------------|-------------|----------|
|      1.     |      a      |     z    | #
|-------------|-------------|----------|
|      2.     |      b      |     x    |
|-------------|-------------|----------|
|      3.     |      c      |     y    | ##
|-------------|-------------|----------|
|      4.     |      a      |     z    | #
|-------------|-------------|----------|
|      5.     |      b      |     z    |
|-------------|-------------|----------|
|      6.     |      c      |     y    | ##
|-------------|-------------|----------|

上面标记的行将从这样的查询中返回。它们本质上是重复的。 我尝试将字段1 =字段1和字段2 =字段2内部连接到表本身,但无济于事。 无需编写具有多个查询的PHP脚本就能做到吗?

2 个答案:

答案 0 :(得分:0)

对不起,我误会了。您正在寻找这样的东西:

SELECT GROUP_CONCAT(t1.id), t1.f1, t1.f2 
FROM t t1 
CROSS JOIN t t2 
WHERE t1.f1=t2.f1 AND t2.f2=t1.f2 AND t1.id != t2.id
GROUP BY t1.f1, t1.f2

答案 1 :(得分:0)

SELECT t.*
FROM mytable t
INNER JOIN (
   SELECT field_1, field_2
   FROM mytable
   GROUP BY field_1, field_2
   HAVING COUNT(id)>1
) f
ON t.field_1 = f.field_1
   AND t.field_2 = f.field_2