Rumah >pangkalan data >Oracle >Cara mengisih hasil pertanyaan dalam oracle

Cara mengisih hasil pertanyaan dalam oracle

青灯夜游
青灯夜游asal
2022-01-13 11:33:4318625semak imbas

Dalam Oracle, anda boleh menggunakan pernyataan "SELECT" dan klausa "ORDER BY" untuk mengisih pertanyaan Anda boleh mengisih set hasil pertanyaan bagi satu atau lebih lajur dalam susunan menaik atau menurun Sintaks ". PILIH nama medan" DARI nama jadual data ORDER BY field name [ASC|DESC]".

Cara mengisih hasil pertanyaan dalam oracle

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.

Dalam Oracle, anda boleh menggunakan pernyataan "SELECT" dan klausa "ORDER BY" untuk melaksanakan pengisihan pertanyaan.

Dalam Oracle, rekod data baris disimpan dalam jadual dalam susunan yang tidak ditentukan, tanpa mengira susunan baris dimasukkan ke dalam pangkalan data. Untuk menanyakan rekod baris mengikut lajur dalam tertib menaik atau menurun, anda mesti secara eksplisit mengarahkan pangkalan data Oracle cara mengisih.

Sebagai contoh, anda mungkin mahu menyenaraikan semua pelanggan mengikut abjad mengikut nama atau memaparkan semua pelanggan mengikut tertib daripada had kredit terendah hingga tertinggi.

Untuk mengisih data yang ditanya, tambahkan klausa ORDER BY pada pernyataan SELECT seperti berikut. Klausa

ORDER BY boleh mengisih set hasil satu atau lebih lajur dalam tertib menaik atau menurun.

Sintaks:

SELECT
    字段名,
FROM
    table_name
ORDER BY
    字段名 [ASC | DESC] [NULLS FIRST | NULLS LAST]

Untuk mengisih hasil yang ditetapkan mengikut lajur, anda boleh menyenaraikan lajur selepas klausa ORDER BY.

ialah susunan pengisihan mengikut nama lajur, yang boleh menjadi:

  • ASC bermaksud menyusun mengikut tertib menaik

  • DESC bermaksud mengisih dalam tertib menurun

Secara lalai, klausa ASC mengisih baris dalam tertib menaik sama ada ORDER BY dinyatakan atau tidak. Jika anda ingin mengisih baris dalam tertib menurun, gunakan DESC secara eksplisit.

NULLS FIRST meletakkan nilai NULL sebelum nilai bukanNULL dan NULLS LAST meletakkan nilai NULL selepas nilai bukanNULL. Klausa

ORDER BY boleh mengisih data mengikut berbilang lajur, setiap lajur mungkin mempunyai susunan isihan yang berbeza.

Perhatikan bahawa klausa ORDER BY sentiasa klausa terakhir dalam pernyataan SELECT.

Contoh klausa Oracle ORDER BY

Yang berikut akan ditunjukkan menggunakan jadual customers dalam pangkalan data sampel.

Cara mengisih hasil pertanyaan dalam oracle

Penyata berikut mendapatkan semula jadual pelanggan daripada pelanggan (customers) jadual: name, address dan credit limit:

SELECT name, address, credit_limit FROM customers;

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -

Cara mengisih hasil pertanyaan dalam oracle

Seperti yang anda boleh lihat dalam tangkapan skrin, susunan rekod baris tidak ditentukan.

1. Contoh pengisihan baris mengikut lajur

Untuk mengisih nama pelanggan mengikut abjad dalam tertib menaik, gunakan pernyataan berikut:

SELECT name,address,credit_limit
FROM customers
ORDER BY name ASC;

Laksanakan kod contoh di atas dan dapatkan keputusan berikut -

Cara mengisih hasil pertanyaan dalam oracle

ASC mengarahkan Oracle untuk mengisih baris dalam tertib menaik. Tetapi ASC adalah pilihan dan jika ditinggalkan, secara lalai, klausa ORDER BY mengisih baris mengikut lajur yang ditentukan dalam tertib menaik.

Oleh itu, ungkapan berikut:

ORDER BY name ASC

bersamaan dengan -

ORDER BY name

Untuk mengisih nama pelanggan dalam susunan abjad menurun, letakkan sub ORDER BY Secara eksplisit gunakan DESC selepas nama lajur dalam ayat, seperti ditunjukkan di bawah:

SELECT name, address, credit_limit
FROM customers
ORDER BY name DESC;

Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut -

Cara mengisih hasil pertanyaan dalam oracle

2. Contoh mengisih baris mengikut berbilang lajur

Untuk mengisih berbilang lajur, anda boleh menggunakan koma untuk memisahkan setiap lajur dalam klausa ORDER BY.

Lihat jadual Kenalan (contacts) berikut dalam pangkalan data sampel.

Sebagai contoh, untuk mengisih mengikut first_name dalam tertib menaik dan lajur last_name dalam tertib menurun, gunakan pernyataan berikut:

SELECT first_name, last_name
FROM contacts
ORDER BY first_name, last_name DESC;

Laksanakan kod contoh di atas, anda boleh lihat Hasilnya adalah seperti berikut -

Cara mengisih hasil pertanyaan dalam oracle

Seperti yang anda boleh lihat daripada tangkapan skrin di atas, contact_id ialah nilai yang sama untuk rekod 91 dan 311 nilai first_name disusun dalam tertib menurun. last_name

Dalam contoh ini, Oracle mula-mula mengisih baris dalam

tertib menaik untuk mencipta set hasil awal. Oracle kemudian mengisih set hasil awal first_name dalam susunan menurun. last_name

Lihat hasil yang serupa dengan yang berikut:

Cara mengisih hasil pertanyaan dalam oracle

Dalam hasil ini di atas:

  • 首先,按first_name升序排序。
  • 其次,如果两个名字相同,按last_name降序排列,如Daniel GlassDaniel CostnerDianne SenDianne DerekDoretha TylerDorotha Wong

3、按列位置排序行示例

不需要指定用于排序数据的列名称。如果您愿意,可以使用ORDER BY子句中列的位置。

请参考下语句 -

SELECT name, credit_limit,address
FROM customers
ORDER BY 2 DESC, 1;

在这个例子中,name列的位置是1credit_limit列的位置是2。相当于以下查询语句 -

SELECT name, credit_limit,address
FROM customers
ORDER BY credit_limit DESC, name;

ORDER BY子句中,使用这些列位置来指示Oracle对行进行排序。

4、用NULL值排序行的示例

请参阅示例数据库中的以下地区(locations)表:

Cara mengisih hasil pertanyaan dalam oracle

以下语句按城市(city)和州(state)检索位置并对其进行排序:

SELECT country_id, city, state
FROM locations 
ORDER BY state DESC;

执行上面查询语句,得到以下结果 -

Cara mengisih hasil pertanyaan dalam oracle

state列有NULL值,这意味着state数据与某些城市(例如:Beijing, HiroshimaLondon)无关。

当使用非NULL值对混合NULL进行排序时,Oracle允许指定哪个应该首先出现。

例如,以下语句按升序对state列进行排序,并首先将NULL值放置在前面。

SELECT country_id, city, state
FROM
    locations
ORDER BY
    state ASC NULLS FIRST;

要放置NULL值在后面,可以使用NULLS LAST,如下面的语句所示:

SELECT country_id, city, state
FROM
    locations
ORDER BY
    state ASC NULLS LAST;

执行上面示例查询语句,得到以下结果:

Cara mengisih hasil pertanyaan dalam oracle

5、按函数或表达式排序数据

ORDER BY子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。

例如,以下语句使用ORDER BY子句中的UPPER()函数来区分客户名称的大小写:

SELECT customer_id, name
FROM customers
ORDER BY UPPER( name );

执行上面查询语句,得到以下结果 -

Cara mengisih hasil pertanyaan dalam oracle

推荐教程:《Oracle教程

Atas ialah kandungan terperinci Cara mengisih hasil pertanyaan dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn