รวบรวม Code ต่างๆนานา ที่เคยพบเจอมาจากประสบการณ์

UNDERGROUND PROGRAMMER PRESENT

วันจันทร์ที่ 14 พฤษภาคม พ.ศ. 2561

SQL SERVER#11 การลบข้อมูลซ้ำในระบบ โดยการใช้ CTE (Common Table Expressions)

พบข้อมูลซ้ำในระบบ เอาออกให้หน่อย !! 😕 แล้วจะเอาออกอย่างไง ลบทีละตัวก็ไม่ได้ ถึงทำได้ก็มหาศาล ---> เอาไป 1 วิธีที่ใช้บ่อยละกัน

ก่อนอื่นมาทำความรู้จักกับ CTE (Common Table Expressions) ก่อนละกันนะ


CTE : (Common Table Expressions) คือ ง่ายๆ สั้นๆ มันก็คือ ตารางแบบหนึ่ง ที่สามารถเก็บข้อมูลเอาไว้ชั่วคราว และไม่ทำการจัดเก็บลงฐานข้อมูล เช่นเดียวกันกับ Derived Tables

เข้าเรื่องเลยละกัน: โจทย์ มีอยู่ว่า ข้อมูลในตารางฐานข้อมูลนั้นมีการทับซ้อนกันของข้อมูลอยู่ และต้องการที่จะทำการคัดออก ให้เหลือเพียงแค่ข้อมูลเดียวเท่านั้น 

จากตัวอย่างข้อมูลจะเห็นได้ว่า มีข้อมูลที่ซ้ำกันอยู่ ซึ่งเราต้องทำการนำออกไป โดยการใช้คำสั่ง ดังต่อไปนี้ 

  • ดึงข้อมูลเข้าสู่ตารางชั่วคราว โดยมีการเพิ่ม Column RN เข้าไป ซึ่งจะเป็นตัวที่นับจำนวนของแถวข้อมูลที่ซ้ำกัน ซึางหากเรา ดูข้อมูลฌฉพาะคำสั่ง ก็จะได้ข้อมูล

  • ให้ทำการ ลบแถวข้อมูลที่ มีค่า RN มากกว่า 1 ออกไป
  • ทำการเรียกดูข้อมูลอีกครั้ง
จะพบว่าข้อมูลในแถวที่ซ้ำกันนั้นจะถูกลบออกไป


*** สำหรับ CTE นั้นเราสามารถนำไปประยุกต์ใช้งานได้ มากว่าตัวอย่างข้างต้น ซึ่งจะช่วยลด การเขียน Query ที่ซับซ้อนไปได้ 





ไม่มีความคิดเห็น:

แสดงความคิดเห็น