Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

นับจำนวนค่าซ้ำในคอลัมน์ MySQL (หาค่าที่พบมากที่สุด)

ใช้ GROUP BY ร่วม COUNT() และ ORDER BY COUNT(*) DESC เพื่อหาค่าที่ซ้ำมากที่สุด

ตัวอย่างการใช้งาน

1. สร้างตารางข้อความโพสต์

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> PostMessage VARCHAR(100)
    -> );
mysql> INSERT INTO DemoTable(PostMessage) VALUES 
('Hi'), ('Hello'), ('Hi'), ('Awesome'), ('Hello'), ('Hi'), ('Awesome');

2. นับและเรียงตามจำนวนมากไปน้อย

mysql> SELECT PostMessage, COUNT(Id) FROM DemoTable 
    -> GROUP BY PostMessage ORDER BY COUNT(Id) DESC;

ผลลัพธ์

+-------------+-----------+
| PostMessage | COUNT(Id) |
+-------------+-----------+
| Hi          | 3         |
| Hello       | 2         |
| Awesome     | 2         |
+-------------+-----------+

แสดงเฉพาะค่าที่ซ้ำมากที่สุด (Top 1)

SELECT PostMessage, COUNT(Id) AS cnt 
FROM DemoTable 
GROUP BY PostMessage 
ORDER BY cnt DESC 
LIMIT 1;

แสดงเฉพาะค่าที่ซ้ำเกิน 2 ครั้ง

SELECT PostMessage, COUNT(Id) 
FROM DemoTable 
GROUP BY PostMessage 
HAVING COUNT(Id) > 2;

ผลลัพธ์

+-------------+-----------+
| PostMessage | COUNT(Id) |
+-------------+-----------+
| Hi          | 3         |
+-------------+-----------+

ประสิทธิภาพ: สร้าง Index

CREATE INDEX idx_postmsg ON DemoTable(PostMessage);