最佳答案
从技术上讲,您不需要这样的查询;任何值得盐的RDBMS都不允许插入会在表中产生重复主键的行.这样的事情违反了主键的定义.
原文链接:https://www.f2er.com/mysql/433368.html但是,如果您要在将主键应用于包含这些列的表之前编写查询以查找这些列组的重复项,那么这就是您想要的:
select
t.user_id,t.round,t.tournament_id
from
table as t
group by
t.user_id,t.tournament_id
having
count(*) > 1
上面只会为您提供组合具有多行的列的组合,如果要查看行中的所有列,则执行以下操作:
select
o.*
from
table as o
inner join (
select
t.user_id,t.tournament_id
from
table as t
group by
t.user_id,t.tournament_id
having
count(*) > 1
) as t on
t.user_id = o.user_id and
t.round = o.round and
t.tournament_id = o.tournament_id
请注意,如果需要多次使用结果,也可以创建temporary table并加入.