zoukankan      html  css  js  c++  java
  • SQL联合主键 查重

    2014年最后一天,今天在给数据库导入数据的时候,遇到一个问题,就是联合主键去重。

    事情是这样的,现有一个表M,我想找个表中导入了许多数据,并需要将字段A(int)和B(int)联合设置为主键。

    但是在设置主键时,告知我有重复的内容,无法设置主键。

    正常情况下,这两个字段的组合是唯一的,不应该重复,为了找到重复数据,看看是什么方面出了问题。

    采用distinct方式

    但是发现

    select count(distinct name, id) from A

    这句话在SQL里不适用,http://www.cnblogs.com/rainman/archive/2013/05/03/3058451.html这个里面写了,当然SQL里也会报错。

    所以只能将两个字段进行转换并重新组合成一个字段进行查询

    select cast(A as varchar(10))+cast(B as varchar(10)) newkey from M group by cast(A as varchar(10))+cast(B as varchar(10)) having count(cast(A as varchar(10))+cast(B as varchar(10)))>1

    代码本身没有什么难度,就是在于要转换思想,不能仅仅纠结于两个int类型的主键,重新组合就方便查询了。

  • 相关阅读:
    杭电2042
    杭电2041
    杭电2040
    杭电2046
    SPOJ
    SPOJ
    SPOJ
    HDU
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/ZXdeveloper/p/4195252.html
Copyright © 2011-2022 走看看