如何查找具有不同slug的重复条目?

时间:2017-10-19 11:48:12

标签: mysql sql

我有一个像这样的MySQL表:

id | user_id | title | slug
------------------------------
1  | 1       | hello | hello
2  | 1       | hello | hello-1
3  | 2       | bye   | bye
5  | 3       | bye   | bye-1

我想找到重复的条目。具有相同user_id,title和slug的条目,以“-1”结尾。

这些是重复的:

1  | 1       | hello | hello
2  | 1       | hello | hello-1

而这些不是,因为user_id是不同的:

3  | 2       | bye   | bye
5  | 3       | bye   | bye-1

我如何找到这些副本?

3 个答案:

答案 0 :(得分:2)

一种简单的方法将slu will连接在一起:

select user_id, title, group_concat(distinct slug)
from t
group by user_id, title;

这将它们全部放在一行上。或者,您可以使用exists

select t.*
from t
where exists (select 1
              from t t2
              where t2.user_id = t.user_id and
                    t2.title = t.title and
                    t2.slug <> t.slug
             );

答案 1 :(得分:0)

你可以使用有计数(*)&gt;加入相关标题

Derived2

答案 2 :(得分:0)

在我看来,接受的答案只是假设slu are不同,而不是仅仅因为&#34; -1&#34;部分,这是OP正在寻找的东西......至于说:

if shouldSpawnenemies {
   spawnEnemies
} else {
   spawnPipes
}

导致重复的行,但它们不是。 因此,它适用于OP用作示例的值,但不适用于其他值......

1  | 1       | hello | hello
2  | 1       | hello | other

上面的查询试图解决&#34; -1&#34;问题。