พบข้อมูลซ้ำในระบบ เอาออกให้หน่อย !! 😕 แล้วจะเอาออกอย่างไง ลบทีละตัวก็ไม่ได้ ถึงทำได้ก็มหาศาล ---> เอาไป 1 วิธีที่ใช้บ่อยละกัน
ก่อนอื่นมาทำความรู้จักกับ CTE (Common Table Expressions) ก่อนละกันนะ
CTE : (Common Table Expressions) คือ ง่ายๆ สั้นๆ มันก็คือ ตารางแบบหนึ่ง ที่สามารถเก็บข้อมูลเอาไว้ชั่วคราว และไม่ทำการจัดเก็บลงฐานข้อมูล เช่นเดียวกันกับ Derived Tables
เข้าเรื่องเลยละกัน: โจทย์ มีอยู่ว่า ข้อมูลในตารางฐานข้อมูลนั้นมีการทับซ้อนกันของข้อมูลอยู่ และต้องการที่จะทำการคัดออก ให้เหลือเพียงแค่ข้อมูลเดียวเท่านั้น
จากตัวอย่างข้อมูลจะเห็นได้ว่า มีข้อมูลที่ซ้ำกันอยู่ ซึ่งเราต้องทำการนำออกไป โดยการใช้คำสั่ง ดังต่อไปนี้
- ดึงข้อมูลเข้าสู่ตารางชั่วคราว โดยมีการเพิ่ม Column RN เข้าไป ซึ่งจะเป็นตัวที่นับจำนวนของแถวข้อมูลที่ซ้ำกัน ซึางหากเรา ดูข้อมูลฌฉพาะคำสั่ง ก็จะได้ข้อมูล
- ให้ทำการ ลบแถวข้อมูลที่ มีค่า RN มากกว่า 1 ออกไป
- ทำการเรียกดูข้อมูลอีกครั้ง
จะพบว่าข้อมูลในแถวที่ซ้ำกันนั้นจะถูกลบออกไป
*** สำหรับ CTE นั้นเราสามารถนำไปประยุกต์ใช้งานได้ มากว่าตัวอย่างข้างต้น ซึ่งจะช่วยลด การเขียน Query ที่ซับซ้อนไปได้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น