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