ฐานข้อมูลตัวอย่าง
ก่อนจะเรียนรู้การใช้คำสั่ง DISTINCT มาดูตัวอย่างตารางข้อมูลที่จะใช้กันก่อน
นี่คือส่วนหนึ่งของตาราง Customers ที่เก็บข้อมูลลูกค้าในฐานข้อมูล
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
ตารางนี้มี 7 คอลัมน์ (Columns) ได้แก่ CustomerID, CustomerName, ContactName, Address, City, PostalCode, และ Country
เมื่อไม่ใช้ DISTINCT ?
หากไม่ใช้ DISTINCT จะดึงค่าของคอลัมน์ “Country” จากทุกระเบียน (Records)
รวมถึงค่าที่อาจซ้ำกันด้วย
SELECT Country
FROM Customers;
ดังนั้น DISTINCT จะช่วยให้ผลลัพธ์แสดงเฉพาะค่าที่แตกต่าง
คำสั่ง SELECT DISTINCT
คำสั่ง SELECT DISTINCT ใช้เพื่อ แสดงเฉพาะค่าที่ไม่ซ้ำกัน (Distinct / Different Values) จากคอลัมน์ในตาราง
คำสั่งนี้จะกรองค่าที่ซ้ำกันออก เช่น “Mexico” ปรากฏหลายครั้ง แต่ผลลัพธ์จะมีเพียงครั้งเดียว
SELECT DISTINCT Country
FROM Customers;
รูปแบบคำสั่ง (Syntax)
SELECT DISTINCT column1, column2, ...
FROM table_name;
คุณสามารถระบุได้มากกว่าหนึ่งคอลัมน์
โดยระบบจะถือว่าข้อมูล “ไม่ซ้ำ” ก็ต่อเมื่อ ค่าทั้งหมดในคอลัมน์ที่ระบุแตกต่างกัน
การนับค่าที่ไม่ซ้ำกัน (Count Distinct)
คุณสามารถใช้ DISTINCT ร่วมกับฟังก์ชัน COUNT()
เพื่อหาจำนวนค่าที่แตกต่างกัน เช่น จำนวนประเทศที่ไม่ซ้ำกันในตาราง
SELECT COUNT(DISTINCT Country)
FROM Customers;
แต่สามารถใช้วิธีแก้ไข (workaround) ได้ดังนี้:
SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);