เมื่อทำงานกับฐานข้อมูล คุณอาจต้องการดึงค่าที่ไม่ซ้ำกัน (unique values) จากชุดข้อมูล เช่น รายชื่อสินค้าที่ขายไปแล้ว หรือหมวดหมู่ภาพยนตร์ทั้งหมดในฐานข้อมูลหนัง
SQL มีฟังก์ชัน built-in ช่วยทำได้: DISTINCT ออปอเรเตอร์ DISTINCT ช่วยลบเรคอร์ดซ้ำ เพื่อดึงเฉพาะค่าที่ไม่ซ้ำกันในชุดข้อมูล
ในบทช่วยสอนนี้ เราจะแยกวิเคราะห์พื้นฐานของ DISTINCT ใน SQL และเมื่อไหร่ควรใช้
บทนำสั้นๆ เกี่ยวกับ SQL Query
เพื่อดึงข้อมูลจากฐานข้อมูล ต้องเขียนคิวรี่ คิวรี่ SQL เกือบทุกครั้งเริ่มด้วยคำสั่ง SELECT ระบุข้อมูลที่ต้องการ ไวยากรณ์พื้นฐาน:
SELECT column_name FROM table_name WHERE your_query_conditions;
ตัวอย่างคิวรี่ดึงชื่อและตำแหน่งพนักงานทั้งหมด:
SELECT name, title FROM employees;
ผลลัพธ์:
| name | title |
| Luke | Sales Associate |
| Mike | Sales Associate |
| Hannah | Sales Associate |
| Geoff | Senior Sales Associate |
| Alexis | Sales Associate |
| Jonah | Vice President of Sales |
| Emma | Marketing Director |
หากต้องการหลายคอลัมน์ ให้คั่นด้วยจุลภาค หรือใช้ * สำหรับทุกคอลัมน์ สามารถใช้ WHERE กรองเงื่อนไขได้ เช่น หา Sales Associate ทั้งหมด:
SELECT name, title FROM employees WHERE title = 'Sales Associate':
ผลลัพธ์:
| name | title |
| Luke | Sales Associate |
| Mike | Sales Associate |
| Hannah | Sales Associate |
| Alexis | Sales Associate |
(4 แถว)
SQL DISTINCT
เมื่อดึงข้อมูล ผลลัพธ์อาจมีแถวหรือค่าซ้ำ สมมติต้องการรายชื่อตำแหน่งทั้งหมดที่พนักงานครองอยู่ ถ้าใช้ SELECT ธรรมดาจะได้ค่าซ้ำ:
SELECT title FROM employees;
ผลลัพธ์:
| title |
| Sales Associate Sales Associate Sales Associate Senior Sales Associate Sales Associate Vice President of Sales Marketing Director |
(7 แถว)
ตำแหน่ง Sales Associate ปรากฏ 4 ครั้ง เพราะมี 4 คนครองตำแหน่งนี้ แต่ถ้าต้องการรู้แค่ว่ามีตำแหน่งอะไรบ้าง ไม่สนจำนวนคน ให้ใช้ SQL DISTINCT
คีย์เวิร์ด DISTINCT ใช้ร่วมกับ SELECT:
SELECT DISTINCT title FROM employees;
ผลลัพธ์:
| title |
| Vice President of Sales Sales Associate Senior Sales Associate Marketing Director |
(4 แถว)
คิวรี่คืนตำแหน่งทั้งหมดที่พนักงานครองอยู่ โดยไม่ซ้ำกัน ไม่มีค่าซ้ำในผลลัพธ์
DISTINCT มีประโยชน์มากเมื่อทำงานกับข้อมูลขนาดใหญ่ ในตัวอย่างมีแค่ 7 พนักงาน แต่ถ้ามี 500 คน จะยากมากที่จะดูตำแหน่งที่มีอยู่ถ้าไม่ใช้ DISTINCT
สรุป
ตอนนี้คุณรู้จักการใช้ DISTINCT บน SQL server แล้ว
ตามที่อธิบาย SQL SELECT DISTINCT ช่วยดึงข้อมูลจากตารางและลบแถวหรือค่าซ้ำออกจากผลลัพธ์ เช่น ต้องการรายชื่อสาขาบริษัททั้งหมด ใช้ DISTINCT ได้ เหมาะอย่างยิ่งเมื่อทำงานกับข้อมูลขนาดใหญ่ที่ค่าซ้ำอาจรบกวน