All Products
Search
Document Center

PolarDB:Klausa ORDER BY

Last Updated:Mar 29, 2026

Klausa ORDER BY mengurutkan baris dalam hasil kueri berdasarkan satu atau beberapa ekspresi. Tanpa klausa ini, database mengembalikan baris dalam urutan yang tidak ditentukan.

Sintaksis

ORDER BY expression [ ASC | DESC ] [, ...]

expression dapat berupa:

  • nama kolom output dalam daftar SELECT

  • nomor ordinal (posisi dari kiri ke kanan) kolom output dalam daftar SELECT

  • suatu ekspresi arbitrer yang dibentuk dari nilai kolom input, termasuk kolom yang tidak ada dalam daftar SELECT

Cara kerja

Baris diurutkan berdasarkan ekspresi pertama dalam klausa ORDER BY. Jika dua baris memiliki nilai yang sama pada ekspresi tersebut, ekspresi berikutnya diterapkan, dan seterusnya. Apabila baris memiliki nilai yang sama pada semua ekspresi yang ditentukan, urutan pengembaliannya bergantung pada implementasi.

Arah pengurutan: Tambahkan ASC (ascending/naik) atau DESC (descending/turun) setelah setiap ekspresi. Nilai default-nya adalah ASC.

Nilai NULL: Nilai null muncul di akhir hasil ascending dan di awal hasil descending.

Aturan pengurutan string: Data string diurutkan menggunakan collation sesuai locale tertentu, yang ditetapkan saat kluster database diinisialisasi.

Batasan

  • Ketika ORDER BY diterapkan pada hasil operasi UNION, INTERSECT, atau MINUS, ekspresi tersebut harus berupa nama kolom output atau nomor ordinal—ekspresi arbitrer tidak diperbolehkan.

  • Jika ekspresi ORDER BY berupa nama sederhana yang cocok dengan nama kolom output sekaligus nama kolom input, ORDER BY memperlakukannya sebagai nama kolom output. Ini berbeda dengan perilaku GROUP BY dalam situasi yang sama, dan diperlukan untuk kompatibilitas dengan standar SQL.

Contoh

Urutkan berdasarkan nama kolom atau nomor ordinal

Kedua kueri berikut mengurutkan hasil berdasarkan kolom dname. Kueri pertama menggunakan nama kolom, sedangkan kueri kedua menggunakan nomor ordinal-nya (2, karena dname merupakan kolom kedua dalam daftar SELECT).

SELECT * FROM dept ORDER BY dname;
SELECT * FROM dept ORDER BY 2;

Keduanya menghasilkan output yang sama:

 deptno |   dname    |   loc
--------+------------+----------
     10 | ACCOUNTING | NEW YORK
     40 | OPERATIONS | BOSTON
     20 | RESEARCH   | DALLAS
     30 | SALES      | CHICAGO
(4 rows)

Urutkan berdasarkan kolom yang tidak ada dalam daftar SELECT

ORDER BY dapat mereferensikan kolom yang tidak ada dalam daftar SELECT. Pernyataan berikut memilih nama karyawan tetapi mengurutkan berdasarkan nomor karyawan:

SELECT ename FROM emp ORDER BY empno;