MySQL วิธี Query ข้อมูลซ้ำกัน

MySQL-วิธี-Query-ข้อมูลที่ซ้ำกัน
MySQL-วิธี-Query-ข้อมูลที่ซ้ำกัน

MySQL วิธี Query ข้อมูลที่ซ้ำกัน ในฐานข้อมูลประเภท SQL อย่าง MySQL มีวิธีในการตรวจสอบข้อมูลแต่ละ Record ที่ซ้ำกัน โดยการใช้คำสั่งอย่าง GROUP BY, HAVING, COUNT เป็นต้น ซึ่งในการเขียนคำสั่งอาจจะมีวิธีที่แตกต่างกันไปตามแนวทางการเขียนของโปรแกรมเมอร์แต่ละท่าน

สำหรับกระทู้นี้จะมาแนะนำอีกหนึ่งวิธีเขียน สำหรับตรวจสอบข้อมูลที่ซ้ำกันใน Column ตัวอย่างเช่นในขั้นตอนการพัฒนาเว็บไซต์ เราอาจจะมีบางขั้นตอนที่เว็บไซต์หรือโปรแกรมของเรา จำเป็นจะต้องทราบก่อนว่ามีข้อมูลซ้ำกันอยู่หรือไม่ ถ้ามีต้องทำอย่างไร อาจจะลบข้อมูลซ้ำออกไปก่อน ค่อยทำงานต่อ เป็นต้น

สำหรับวิธีตรวจสอบว่ามีข้อมูลซ้ำกันในตารางฐานข้อมูล และ Column ไหน เราสามารถเขียนเงื่อนไขได้ดังนี้

SELECT col, COUNT(col) FROM table_name GROUP BY col HAVING COUNT(col) > 1;

ทดสอบการทำงานจากตารางฐานข้อมูลจริง โดยใช้คำสั่งสร้างตารางฐานข้อมูลชื่อว่า tb_name และ insert ข้อมูลลงไป โดยให้มีข้อมูลซ้ำใน Column ชื่อว่า name_th และ name_en ดังนี้

CREATE TABLE `tb_name` (
  `id` int(11) NOT NULL,
  `name_th` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
  `name_en` varchar(200) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `tb_name` (`id`, `name_th`, `name_en`) VALUES
(1, 'ปราโมทย์', 'PRAMOT'),
(2, 'ธงชัย', 'THONGCHAI'),
(3, 'กชณิชา', 'KOTNICHA'),
(4, 'ธงชัย', 'THONGCHAI');

จากนั้นใช้คำสั่งเพื่อแสดงข้อมูล name_th ที่ซ้ำกันและจำนวนที่ซ้ำกันว่ามีกี่ column ได้ดังนี้

SELECT name_th, COUNT(name_th) FROM tb_name GROUP BY name_th HAVING COUNT(name_th) > 1;

ผลลัพธ์ที่ได้จากคำสั่งด้านบน ก็จะแสดงชื่อ “ธงชัย” ที่เป็นชื่อที่ซ้ำกัน และ จำนวนที่ซ้ำกันคือ 2

Leave a Reply