mysql – 如何编写SQL查询来检测重复的主键?

前端之家收集整理的这篇文章主要介绍了mysql – 如何编写SQL查询来检测重复的主键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

假设我想要更改表,以便我的主键如下

user_id,round,tournament_id

目前我需要清理重复项.查找所有重复项的查询是什么?

这是针对MySQL的,我希望看到重复的行

最佳答案
从技术上讲,您不需要这样的查询;任何值得盐的RDBMS都不允许插入会在表中产生重复主键的行.这样的事情违反了主键的定义.

但是,如果您要在将主键应用于包含这些列的表之前编写查询以查找这些列组的重复项,那么这就是您想要的:

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并加入.

原文链接:https://www.f2er.com/mysql/433368.html

猜你在找的MySQL相关文章