oracleskill

Home TUTORIAL เทคนิคการลบข้อมูลแถวที่ซ้ำกันภายในตาราง (remove duplicate rows in table)

เทคนิคการลบข้อมูลแถวที่ซ้ำกันภายในตาราง (remove duplicate rows in table)
share

หลาย ครั้ง ที่เราสร้างตาราง โดยไม่มี constraint เช่น Primary Key , Unique Key แล้วในตารางนั้น เราโหลด ข้อมูลใส่เข้าไปแล้ว ต่อมาเราจะสร้าง constraint พวก primary key ไปผูก แต่ปรากฏว่า ไม่สามารถ enable ขึ้นมาได้ เนื่องจาก ในตารางมีแถวที่ข้อมูลซ้ำกัน อาจเพราะโหลดข้อมูลเข้าไปเบิ้ลซ้ำกัน หรือ ด้วยสาเหตุอะ ไรก็แล้วแต่

วิธีนี้ จะช่วยกำจัดแถว ที่ข้อมูลซ้ำกันหลายแถวออกไป ให้เหลือเพียงแค่แถวเดียว 

1. สร้างตารางขึ้นมาสำหรับทดสอบ 

สร้างตารางขึ้นมาทดสอบ

 

2. ใส่ข้อมูลที่ซ้ำกันลงไป สัก 2 ชุด 

ใส่ข้อมูลที่ซ้ำกัน

ใส่ข้อมูลที่ซ้ำกัน

 

3. จะเห็นว่า เรามีข้อมูลที่ซ้ำกันอยู่ เราจะกำจัดแถวที่ซ้ำกัน เพื่อเอา ID เป็น Primary Key 

ข้อมูลซ้ำ

 

4. เขียน SQL ดังนี้ 

DELETE FROM your_table
WHERE rowid not in ( SELECT MIN(rowid)
FROM your_table
GROUP BY column1, column2, column3...) ;
โดย column1 , column2 , column3 ,.. เป็นคอลัมน์ที่จะเอามาทำเป็น Key

 

 

5. เมื่อดูอีกที จะเห็นว่าแถวที่ซ้ำกันถูกลบไปแล้ว เหลือแต่ตัวแทนของข้อมูลซ้ำแค่แถวเดียว 

remove dupplicate rows complete

share