首頁>Program>source

我已向客戶提供以下查詢,以删除重複的電话號碼.記錄在MSSQL資料庫中,但現在他们也需要在MySQL上进行記錄,並且他们報告MySQL抱怨查詢的格式.我已经包括了一个測試表的設置,该測試表具有重複的代碼示例,但實際的删除查詢才是最重要的。

由於我仍在忙於下載和安裝MySQL,因此我無知而紧急地問了這个問题,也许有人可以提供帮助。

create table bkPhone
 (
     phoneNo nvarchar(20),
     firstName nvarchar(20),
     lastName nvarchar(20)
 )
 GO
 insert bkPhone values('0783313780','Brady','Kelly')
 insert bkPhone values('0845319792','Mark','Smith')
 insert bkPhone values('0834976958','Bill','Jones')
 insert bkPhone values('0845319792','Mark','Smith')
 insert bkPhone values('0828329792','Mickey','Mouse')
 insert bkPhone values('0834976958','Bill','Jones')
 alter table bkPhone add phoneId int identity
 delete from bkPhone
 where phoneId not in
 (
     select min(phoneId)
     from bkPhone
     group by phoneNo,firstName,lastName
     having  count(*) >= 1
 )
最新回復
  • 5月前
    1 #

    有很多方法可以通往罗马.這是一.非常快.因此,您可以將其用於大型資料庫.不要忘記索引。 诀窍是:使phoneNo唯一,並使用" ignore"。

    drop table if exists bkPhone_template;
    create table bkPhone_template (
             phoneNo varchar(20),
             firstName varchar(20),
             lastName varchar(20)
     );
    insert into bkPhone_template values('0783313780','Brady','Kelly');
     insert into bkPhone_template values('0845319792','Mark','Smith');
     insert into bkPhone_template values('0834976958','Bill','Jones');
     insert into bkPhone_template values('0845319792','Mark','Smith');
     insert into bkPhone_template values('0828329792','Mickey','Mouse');
     insert into bkPhone_template values('0834976958','Bill','Jones');
    drop table if exists bkPhone;
    create table bkPhone like bkPhone_template;
    alter table bkPhone add unique (phoneNo);
    insert  ignore into bkPhone (phoneNo,firstName,lastName) select phoneNo,firstName,lastName from bkPhone_template;
    drop table bkPhone_template;
    

    如果資料表已经存在,則只需執行帶有以下插入忽略選擇的建立表選擇.最後,您必须執行一些表重命名語句.就是這樣。

    此解決方法比删除操作快得多,而且快得多.

  • 5月前
    2 #

    您可以通過以下方法選擇唯一的物件:

    select distinct(phoneNo) from bkPhone
    

    並將它们放入另一个表中,删除旧表,然後將新表重命名為旧名稱。

  • 5月前
    3 #

    MySQL抱怨,因為這没有意義.您尝試使用 min()进行汇总 分組依据的列.

    現在,如果您要删除同一个人的重複電话號碼,則SQL應该為:

    delete from bkPhone
     where phoneId not in
     (
             select min(phoneId)
             from bkPhone
             group by firstName,lastName /* i.e. grouping by person and NOT grouping by phoneId */
             having  count(*) >= 1
     )
    

  • 5月前
    4 #

    Mysql還包括:

    http://mssql-to-postgresql.blogspot.com/2007/12/deleting-duplicates-in-postgresql-ms.html

  • 如何在MATLAB中將數字連線為變數名?
  • wix:从控製面板卸載不同於从msi删除