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