今天接到一任務(wù),有一張學(xué)生信息表(Excel表),里面有一萬(wàn)多條記錄,現(xiàn)在要把這張表導(dǎo)入到數(shù)據(jù)庫(kù)中,并設(shè)置學(xué)生學(xué)號(hào)為主鍵,但是現(xiàn)在這張表中的學(xué)生學(xué)號(hào)有重復(fù)的記錄,我必須先找出這些重復(fù)的記錄,然后再進(jìn)行篩選,經(jīng)過(guò)研究問(wèn)題終于得到解決。
以上問(wèn)題實(shí)際上就是查詢數(shù)據(jù)庫(kù)表中某一字段值重復(fù)的記錄,這里省略如何將Excel表導(dǎo)入到數(shù)據(jù)庫(kù)步驟,只討論用SQL查詢數(shù)據(jù)庫(kù)中某一字段下相同值的記錄方法。
現(xiàn)在假設(shè)數(shù)據(jù)庫(kù)表名為student,里面有字段Sno(學(xué)號(hào)),ID(身份證),這里提供兩種查詢的方法:
方法一:通過(guò)學(xué)號(hào)和身份證字段來(lái)查詢(數(shù)據(jù)庫(kù)執(zhí)行效率高,推薦)
復(fù)制代碼 代碼如下:
SELECT *
FROM student AS A
WHERE (Sno IN (SELECT Sno FROM student AS B WHERE A.ID > B.ID))
方法二:只通過(guò)學(xué)號(hào)字段來(lái)查詢(數(shù)據(jù)庫(kù)執(zhí)行效率低,不推薦)
復(fù)制代碼 代碼如下:
SELECT *
FROM student AS A
WHERE (SELECT COUNT(*) FROM student WHERE Sno=A.Sno)>1
從運(yùn)行結(jié)果來(lái)看,方法一和方法二相同,但是執(zhí)行效率完全不同,方法一執(zhí)行一萬(wàn)多條數(shù)據(jù)只需要幾秒鐘即可,方法二則需要好幾分鐘,而且還有死機(jī)現(xiàn)象。不知道還有沒(méi)有其他方法,如果有高手知道請(qǐng)指教?。。?
您可能感興趣的文章:- MySQL查詢本周、上周、本月、上個(gè)月份數(shù)據(jù)的sql代碼
- SQLSERVER查詢所有數(shù)據(jù)庫(kù)名,表名,和字段名的語(yǔ)句
- mysql隨機(jī)查詢?nèi)舾蓷l數(shù)據(jù)的方法
- mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)
- mysql 查詢數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)的語(yǔ)句
- asp.net連接查詢SQL數(shù)據(jù)庫(kù)并把結(jié)果顯示在網(wǎng)頁(yè)上(2種方法)
- php基礎(chǔ)之連接mysql數(shù)據(jù)庫(kù)和查詢數(shù)據(jù)
- oracle,mysql,SqlServer三種數(shù)據(jù)庫(kù)的分頁(yè)查詢的實(shí)例
- Oracle 數(shù)據(jù)庫(kù)連接查詢SQL語(yǔ)句
- 通過(guò)sql準(zhǔn)確查出一天數(shù)據(jù)的方法