ใช้ COUNT(*) กับ GROUP BY แล้ว ORDER BY COUNT(*) DESC LIMIT 1
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> Name VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable VALUES('John'), ('Sam'), ('John'), ('Mike'), ('John'), ('Sam'), ('Carol');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------+ | Name | +-------+ | John | | Sam | | John | | Mike | | John | | Sam | | Carol | +-------+
คำสั่งหาชื่อที่ซ้ำมากที่สุด
mysql> SELECT Name, COUNT(*) AS freq FROM DemoTable GROUP BY Name ORDER BY COUNT(*) DESC LIMIT 1;
ผลลัพธ์:
+------+------+ | Name | freq | +------+------+ | John | 3 | +------+------+
คำอธิบาย: GROUP BY จัดกลุ่มชื่อ | COUNT(*) นับในแต่ละกลุ่ม | ORDER BY COUNT(*) DESC เรียงมากไปน้อย | LIMIT 1 เอาอันดับ 1