[SQL] การบอกลำดับของ Record จากการ Select ข้อมูล

วันนี้มีเพื่อนที่ทำงานถามว่าจะเพิ่มคอลัมน์ เพื่อบอกลำดับของข้อมูลอย่างไร เพราะใน DB ก็ไม่ได้เก็บอยู่แล้ว จะเขียนใน Query หรือ มา Loop และ Count เองใน Code ดี

ข้อมูลใน DB (Input)

 Firstname   | Lastname    | Salary
  กอไก่       | รุ่งเรืองวัฒนะ   |  50,000
  ขอไก่       | เกิดก่อนไก่    |  60,000
  คอควาย     | รวยนะจ๊ะนะ    |  200,000

ผลลัพธ์ที่ต้องการ (Output)

 No | Firstname | Lastname   | Salary
   1 |   กอไก่    | รุ่งเรืองวัฒนะ  |  50,000
   2 |   ขอไก่    | เกิดก่อนไก่   |  60,000
   3 |   ค.ควาย  | รวยนะจ๊ะนะ   |  200,000

จากที่เกริ่นทิ้งไว้ ว่ามี 2 ทางให้ทำ คือ Query ออกมาเลย หรือ เอาข้อมูลมา Loop Code เอาเอง ซึ่งในกรณีนี้ ผมขอ Query และกัน เพราะไม่เปลือง Performance ของระบบ และไม่ต้องมาเขียน Code นั่งไล่ Loop ใน App ของเราด้วย โดยผมได้ลองใน DBMS 2 ระบบ ได้แก่

  • MySQL ใช้คำสั่งดังนี้
    SELECT @n := @n + 1 AS 'NO'
         , Firstname
         , Lastname
         , Salary
    FROM Employee, (SELECT @n := 0) m
    ORDER BY Firstname, Lastname
  • Microsoft SQL Server ใช้คำสั่งดังนี้
    SELECT row_number() OVER (ORDER BY Firstname, Lastname) AS 'NO'
         , Firstname
         , Lastname
         , Salary
    FROM Employee

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.