อีกหนึ่งวิธีในการกำจัดข้อมูลที่ซ้ำซ้อนกันในตาราง

ถ้าคุณมีตารางข้อมูลอยู่ และรู้ว่ามีบางแถวที่มีข้อมูลซ้ำซ้อนกัน ทางไหนเป็นวิธีที่ดีที่จะสามารถหาและกำจัดแถวที่มีข้อมูลซ้ำนี้ออกไปจากตารางของฐานข้อมูล Oracle ?

อีกวิธีหนึ่งที่เป็นไปได้ในการกำจัดแถวที่ซ้ำซ้อนกันคือการใช้คำสั่ง select distinct และใส่ข้อมูลที่ได้ลงในตารางใหม่

 

จากที่เราสามารถตรวจสอบหาข้อมูลแถวที่มีข้อมูลซ้ำซ้อนกันได้โดยใช้คำสั่ง select ดังนี้

SQL> select a,b,count(*) from test group by a,b;

ผลลัพธ์ที่ได้

A           B COUNT(*)
———- ———- ———-
1           2       259
2           2           5
3           0           1

จากตัวอย่างในตาราง test นี้ที่กำหนดไว้ว่าค่าในคอลัมภ์ a และ b จะต้องมีค่าไม่ซ้ำ ซึ่งผลลัพธ์ที่ปรากฏคือ มีข้อมูลซ้ำ 258 แถว และ 4 แถว

 

เรามาเริ่มต้นกำจัดข้อมูลซ้ำซ้อนอีกวิธีกันเลย

 

การหาแถวข้อมูลที่ไม่ซ้ำซ้อนกัน

เราสามารถหาข้อมูลที่ไม่ซ้ำซ้อนกันได้โดยใช้คำสั่ง select distinct ดังนี้

SQL> select distinct * from test;

ผลลัพธ์ที่ได้

         A           B
———- ———-
          1           2
          2           2
          3           0

 

สร้างตารางใหม่ชั่วคราวเพื่อเก็บผลลัพธ์ที่ได้

SQL> create table new_test as (select distinct * from test);

 

ตรวจสอบผลลัพธ์ที่ได้ในตารางชั่วคราวนี้

SQL> select * from new_test;

ผลลัพธ์ที่ได้

         A           B
———- ———-
          1           2
          2           2
          3           0 

 

ทำการลบข้อมูลในตาราง test ทั้งหมด

SQL> truncate table test;

Table truncated.

 

ทำการเพิ่มข้อมูลกลับไปยังตาราง test จากตารางชั่วคราว    

SQL> insert into test (select * from new_test);

3 rows created.

 

ทำการลบตารางข้อมูลชั่วคราวทิ้ง

SQL> drop table new_test;

Table dropped.

 

ตรวจสอบกันอีกครั้งว่าข้อมูลยังซ้ำกันอีกหรือไม่โดยใช้คำสั่ง select ดังนี้

SQL> select a,b,count(*) from test group by a,b;

ผลลัพธ์ที่ได้

A           B COUNT(*)
———- ———- ———-
1           2           1
2           2           1
3           0           1

 

นี่ก็เป็นอีกหนึ่งวิธีในการกำจัดแถวที่มีข้อมูลซ้ำซ้อนกันในตาราง แต่เพื่อป้องกันการเกิดการซ้ำซ้อนของข้อมูลเหล่านี้ ขอย้ำอย่าลืมใช้ unique constraints หรือ primary key ช่วยได้ ปัญหาข้อมูลซ้ำซ้อนแบบนี้ก็จะไม่มีทางเกิดขึ้นให้เกิดความปวดหัวได้อีก