加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-05-24 00:12:32 所属栏目:编程 来源:网络整理
导读:假设我想要更改表,以便我的主键如下 user_id,round,tournament_id 目前我需要清理重复项.查找所有重复项的查询是什么? 这是针对MySQL的,我希望看到重复的行最佳答案从技术上讲,您不需要这样的查询;任何值得盐的RDBMS都不允许插入会在表中产生重复主键的行.

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

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

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读