[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
  • DB2 - คล้ายกับ 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 sent to your email.