刪除表中的冗余數據


1.表結構: 

CREATE TABLE testS(id INT PRIMARY KEY AUTO_INCREMENT,stu_no VARCHAR(20),stu_name VARCHAR(22) ,course_no INT,course_name VARCHAR(20),score INT)

 

2.題目:

  刪除除了自動編號不同,其他都相同的學生冗余信息。

3.sql:

DELETE FROM tests WHERE id NOT IN (
    SELECT b.bid FROM (SELECT MIN(id) bid,stu_no,course_no,score FROM tests GROUP BY stu_no,course_no,score ) b
)

  分析:

   1) SELECT MIN(id) bid,stu_no,course_no,score FROM tests GROUP BY stu_no,course_no,score

     首先按除了id以外的字段分組,查詢出最小的id

   2) SELECT b.bid FROM (SELECT MIN(id) bid,stu_no,course_no,score FROM tests GROUP BY stu_no,course_no,score ) b

           這一個是查詢出1中的最小id

   3) DELETE FROM tests WHERE id NOT IN ...

           刪除id不包含2中查詢出的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM