All Products
Search
Document Center

OpenSearch:SELECT

Last Updated:Apr 01, 2026

SELECT merupakan dasar dari semua kueri dalam High-performance Search Edition. Setiap klausa kueri lanjutan—seperti filtering, grouping, sorting, dan pagination—dibangun di atas pernyataan SELECT. Untuk sintaksis kueri lanjutan, lihat topik terkait.

Sintaksis

SELECT [ DISTINCT ]
    { * | projectItem [, projectItem ]* }
FROM tableExpression
    [ WHERE booleanExpression ]
    [ GROUP BY { groupItem [, groupItem ]* } ]
    [ ORDER BY { orderByItem [, orderByItem ]* } ]
    [ HAVING booleanExpression ]
    [ LIMIT number ]
    [ OFFSET number ]

projectItem:
    expression [ [ AS ] columnAlias ]
    | tableAlias . *

Klausa

SELECT

Mengembalikan semua kolom atau kumpulan kolom tertentu dari tabel sumber.

Contoh 1: Mengembalikan semua kolom.

SELECT f1, f2 AS ff FROM table;

Contoh 2: Mengembalikan kolom tertentu dan memberikan alias.

SELECT f1, f2 AS ff FROM table;

Contoh 3: Mengembalikan nilai unik dengan menghilangkan duplikat.

SELECT DISTINCT f FROM table;

WHERE

Memfilter baris sebelum pengelompokan dilakukan. Hanya baris yang membuat booleanExpression bernilai true yang diteruskan ke klausa berikutnya.

GROUP BY

Mengelompokkan baris yang memiliki nilai sama pada kolom yang ditentukan, biasanya digunakan bersama fungsi agregat.

SELECT f1, count(*) AS num
FROM t1
GROUP BY f1;

ORDER BY

Mengurutkan set hasil berdasarkan satu atau beberapa kolom.

HAVING

Memfilter kelompok setelah agregasi GROUP BY. Gunakan HAVING untuk kondisi yang melibatkan hasil agregat.

Perbedaan dengan WHERE:

KlausaBeroperasi padaDievaluasi
WHEREBaris individualSebelum pengelompokan
HAVINGKelompok yang telah diagregasiSetelah pengelompokan

LIMIT

Membatasi jumlah baris yang dikembalikan.

OFFSET

Melewatkan jumlah baris tertentu sebelum mengembalikan hasil. Gunakan OFFSET bersama LIMIT untuk kueri terpaginasi.

Contoh berikut menghitung jumlah baris per kelompok dalam subkueri, lalu memfilter hanya kelompok yang nilai num-nya melebihi 100:

SELECT * FROM (
    SELECT f1, count(*) AS num
    FROM t1
    GROUP BY f1
) tt
WHERE tt.num > 100;