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

MySQL Query เพื่อรับค่าที่ไม่ซ้ำ?


ในการนับค่าที่ไม่ซ้ำกันในคอลัมน์ คุณต้องใช้คีย์เวิร์ด DISTINCT เพื่อให้เข้าใจถึงวิธีการทำ ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง UniqueCountByIPAddress -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> UserHits int, -> UserIPAddress varchar(50), -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ ( 0.69 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังต่อไปนี้ −

mysql> แทรกลงในค่า UniqueCountByIPAddress(UserHits,UserIPAddress) (10,'127.0.0.1') แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงในค่า UniqueCountByIPAddress (UserHits, UserIPAddress) (10,'127.0) .0.1');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า UniqueCountByIPAddress (UserHits, UserIPAddress) (20,'127.0.0.1'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงใน UniqueCountByIPAddress(UserHits,UserIPAddress) ค่า(20,'127.0.0.1');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในค่า UniqueCountByIPAddress(UserHits,UserIPAddress) (20,'127.0.0.2');แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า UniqueCountByIPAddress(UserHits,UserIPAddress) (20,'127.0.0.2'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า UniqueCountByIPAddress (UserHits, UserIPAddress) (30,'127.0.0.2'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า UniqueCountByIPAddress (UserHits, UserIPAddress) (30, '127.0.0.2'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.28 วินาที )mys ql> แทรกลงในค่า UniqueCountByIPAddress(UserHits,UserIPAddress) (30,'127.0.0.2'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังต่อไปนี้ −

mysql> เลือก *จาก UniqueCountByIPAddress;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+----------+--------------+| รหัส | 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 |+----+----------+-------------+

ต่อไปนี้เป็นแบบสอบถามเพื่อนับค่าที่แตกต่างกันในคอลัมน์ 'UserIPAddress' -

mysql> เลือก UserHits,count(Distinct UserIPAddress) เป็น TotalHits -> จากกลุ่ม UniqueCountByIPAddress โดย UserHits;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----------+-----------+| UserHits | TotalHits |+----------+-----------+| 10 | 1 || 20 | 2 || 30 | 1 |+----------+-----------+3 แถวในชุด (0.05 วินาที)