我正在尝试编写一个查询,该查询将返回具有两个匹配字段的行。
|-------------|-------------|----------|
| 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脚本就能做到吗?
答案 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