วันเสาร์ที่ 10 สิงหาคม พ.ศ. 2556

เรียน row_limiting_clause บนฐานข้อมูลออราเคิล 12c

ผมได้มีโอกาสในการอ่านเกี่ยวกับ row_limiting_clause บนฐานข้อมูลออราเคิล 12c ผมคิดว่าเป็นเรื่องที่น่าสนใจ ผมเลยนำมาแชร์ต่อเพื่อนๆ ดังที่ทราบกันว่าบนฐานข้อมูล 12c เราสามารถจำกัดจำนวนแถวที่ต้องการ จากการดึงข้อมูล หรือจำกัดเป็นเปอร์เซนต์ พร้อมกันนี้เรายังสามารถข้ามแถวของข้อมูลที่ไม่ต้องการ ก่อนที่จะทำการจำกัดแถวที่ต้องการ เพื่อแสดงข้อมูลออกมา


ตัวอย่าง
SQL> show user;
USER is "SCOTT"
SQL> select empno from emp
  2  ;

     EMPNO
----------
      7369
      7499
      7521
      7566
      7654
      7698
      7782
      7788
      7839
      7844
      7876
      7900
      7902
      7934

14 rows selected.

เริ่มต้นเพื่อดูข้อมูลก่อน
SQL> select empno from emp order by empno;

     EMPNO
----------
      7369
      7499
      7521
      7566
      7654
      7698
      7782
      7788
      7839
      7844
      7876
      7900
      7902
      7934

14 rows selected.

ดึงข้อมูล 5 แถวแรก
SQL>  select empno from emp order by empno fetch first 5 rows only;

     EMPNO
----------
      7369
      7499
      7521
      7566
      7654
อยากได้ข้อมูลแถวที่ 6 - 10
SQL>  select empno from emp order by empno offset 5 rows fetch first 5 rows only;

     EMPNO
----------
      7698
      7782
      7788
      7839
      7844
ผมจำได้ว่าผมเคยเขียน "query เอาข้อมูล max อันดับที่ 3 เท่านั้น"
SQL> create table test as select * from all_objects;

Table created.

SQL> column OBJECT_NAME format a30
SQL>
SQL>
SQL>  select * from (select * from (select object_name , object_id from test order by object_id desc) where rownum <=3 order by object_id) where rownum <=1;

OBJECT_NAME                     OBJECT_ID
------------------------------ ----------
BONUS                               91952
ว้าวกว่าจะได้! ดังนั้นขอใช้ 12c row_limiting_clause ^______________^
SQL> select object_name , object_id from test order by object_id desc offset 2  rows fetch first 1 rows only;

OBJECT_NAME                     OBJECT_ID
------------------------------ ----------
BONUS                               91952
จะเห็นว่าสะดวกขึ้นมากเลย...

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