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

MySQL Query นับค่าที่ไม่ซ้ำ (Unique Values) ในคอลัมน์


ใช้คีย์เวิร์ด 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)