วิธีการ Query เพิ่ม ลด วันเวลา
ในการทำงานบางครั้งเราจำเป็นที่จะต้อง query db โดยการเพิ่มหรือลด วันเวลา
สมมุติว่า
” เราต้องการจะได้ทราบว่า banner ของเวปเราที่จะหมดอายุในอีก 7 วันข้างหน้า มี banner อะไรบ้าง ”
เราก็จะสามารถเขียน query ได้ดังนี้
Query แบบมีเงื่อนไข
สมมุติว่า เราต้องการค้นหาข้อมูล บทความ
ซึ่งถ้าบทความนั้นผ่านให้ เรียก ฟิวด์ อนุมัติโดยใคร มาแสดง
และถ้าบทความนั้นไม่ผ่านให้ เรียก ฟิวด์ ไม่อนุมัติโดยใคร มาแสดง
วิธีการ Query คือ
1 2 3 4 | SELECT IF(type=='Y',approveby,nonapproveby) AS name , topic FROM article LIMIT 0,10 |
หรืออีกวิธีหนึ่ง
1 2 3 4 5 6 | SELECT CASE WHEN (type=='Y') THEN approveby WHEN (type=='N') THEN nonapproveby END AS name , topic FROM article LIMIT 0,10 |
(วิธีที่สอง สามารถที่จะให้มีเงื่อนไขได้มากกว่้า 2 เงื่อนไข)
Distinct กับ Group by
DISTINCT เป็นคำสั่งที่ใช้หาข้อมูลที่ไม่ซ้ำออกมา ซึ่งถ้าข้อมูลซ้ำกันจะเลือกมาแค่ Record เดียว
1 2 3 | SELECT DISTINCT(member_id) FROM member LIMIT 0,10 |
GROUP BY เป็นคำสั่งที่มักจะใช้รวมกับ SUM เพื่อใช้ในการหาผลรวมของข้อมูล แต่ก็สามารถนำมาประยุกต์ เพื่อใช้ในการข้อมูลที่ไม่ซ้ำได้เหมือนกัน
1 2 3 4 | SELECT member_id FROM member GROUP BY member_id LIMIT 0,10 |
เรื่องที่จะบอกก็คือ
DISTINCT กับ GROUP BY ผลลัพธ์ของข้อมูลได้เหมือนกัน แต่ความเร็วในการ Query ต่างกันมาก กับข้อมูลมาก ๆ เพราะฉะนั้นมาเปลี่ยนมาใช้ GROUP BY ดีกว่า เพื่อความเร็วของ program และ db admin จะได้ไม่บ่น

