今天去西安一家公司去面試,其中有一道面試題是這樣的:“如何刪除在數(shù)據(jù)表中完全相同的記錄,如果兩條相同的記錄主鍵不同,那么又應(yīng)該如何刪除” ,當(dāng)時(shí)因?yàn)槭呛芎唵蔚念}目就直接用sql語句完成,面試官看了之后說這個(gè)有問題。回來研究一下果然錯(cuò)了?,F(xiàn)在把
今天去西安一家公司去面試,其中有一道面試題是這樣的:“如何刪除在數(shù)據(jù)表中完全相同的記錄,如果兩條相同的記錄主鍵不同,那么又應(yīng)該如何刪除” ,當(dāng)時(shí)因?yàn)槭呛芎唵蔚念}目就直接用sql語句完成,面試官看了之后說這個(gè)有問題?;貋硌芯恳幌鹿诲e(cuò)了?,F(xiàn)在把研究的步驟分享下來。
研究條件:
window7 + no-install mysql
1. 如何刪除除了主鍵不同其他屬性均相同的記錄
主要思想:首先從數(shù)據(jù)表中找出沒有重復(fù)的數(shù)據(jù)記錄,然后把這些記錄保存到臨時(shí)表中,然后刪除原表記錄把臨時(shí)表中的記錄遷移過去。
具體步驟:
一、 查看下表在student中有兩條相同記錄,有distinct查找不同的記錄(如右圖)。
二、 創(chuàng)建臨時(shí)表,把上面右圖的數(shù)據(jù)遷移到臨時(shí)表student_temp中.
sql語句: create temporary table if not exists student_temp as (select distinct(name), sex from student);
三、 刪除原表內(nèi)容或者重新創(chuàng)建張新表,本例采用在原表基礎(chǔ)上修改,然后把student_temp內(nèi)容遷移到student,最后結(jié)果如下圖所示:
用到sql: insert into student(id, name,sex ) select null,name,sex from student_temp;
最后就可以看到student表中只有兩條不同數(shù)據(jù)了。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com