ใช้คีย์เวิร์ด DISTINCT ร่วมกับ COUNT() เพื่อนับค่าที่ไม่ซ้ำในคอลัมน์
ตัวอย่างการใช้งาน
สร้างตารางเก็บ IP Address และ Hits:
mysql> CREATE TABLE UniqueCountByIPAddress ( Id INT NOT NULL AUTO_INCREMENT, UserHits INT, UserIPAddress VARCHAR(50), PRIMARY KEY(Id) );
เพิ่มข้อมูล (IP ซ้ำกันหลายครั้ง):
INSERT INTO UniqueCountByIPAddress(UserHits,UserIPAddress) VALUES(10,'127.0.0.1'),(10,'127.0.0.1'),(20,'127.0.0.1'),(20,'127.0.0.1'),(20,'127.0.0.2'),(20,'127.0.0.2'),(30,'127.0.0.2'),(30,'127.0.0.2'),(30,'127.0.0.2');
แสดงข้อมูล:
+----+----------+--------------+ | Id | UserHits | UserIPAddress| +----+----------+--------------+ | 1 | 10 | 127.0.0.1 | | 2 | 10 | 127.0.0.1 | | 3 | 20 | 127.0.0.1 | | 4 | 20 | 127.0.0.1 | | 5 | 20 | 127.0.0.2 | | 6 | 20 | 127.0.0.2 | | 7 | 30 | 127.0.0.2 | | 8 | 30 | 127.0.0.2 | | 9 | 30 | 127.0.0.2 | +----+----------+--------------+
คำสั่งนับ IP ที่ไม่ซ้ำ กลุ่มตาม UserHits:
mysql> SELECT UserHits, COUNT(DISTINCT UserIPAddress) AS TotalHits FROM UniqueCountByIPAddress GROUP BY UserHits;
ผลลัพธ์:
+----------+-----------+ | UserHits | TotalHits | +----------+-----------+ | 10 | 1 | | 20 | 2 | | 30 | 1 | +----------+-----------+ 3 rows in set (0.05 sec)
อธิบาย: UserHits=10 มี IP เฉพาะ 127.0.0.1 (1 IP), UserHits=20 มี 127.0.0.1 และ 127.0.0.2 (2 IP), UserHits=30 มีแค่ 127.0.0.2 (1 IP)