Rumah > Artikel > pangkalan data > Cara mengisih hasil pertanyaan dalam oracle
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]".
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
.
Yang berikut akan ditunjukkan menggunakan jadual customers
dalam pangkalan data sampel.
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 -
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 -
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 -
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 -
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
tertib menaik untuk mencipta set hasil awal. Oracle kemudian mengisih set hasil awal first_name
dalam susunan menurun. last_name
first_name
升序排序。last_name
降序排列,如Daniel Glass
和Daniel Costner
,Dianne Sen
和Dianne Derek
,Doretha Tyler
和Dorotha Wong
。3、按列位置排序行示例
不需要指定用于排序数据的列名称。如果您愿意,可以使用ORDER BY
子句中列的位置。
请参考下语句 -
SELECT name, credit_limit,address FROM customers ORDER BY 2 DESC, 1;
在这个例子中,name
列的位置是1
,credit_limit
列的位置是2
。相当于以下查询语句 -
SELECT name, credit_limit,address FROM customers ORDER BY credit_limit DESC, name;
在ORDER BY
子句中,使用这些列位置来指示Oracle对行进行排序。
4、用NULL值排序行的示例
请参阅示例数据库中的以下地区(locations
)表:
以下语句按城市(city
)和州(state
)检索位置并对其进行排序:
SELECT country_id, city, state FROM locations ORDER BY state DESC;
执行上面查询语句,得到以下结果 -
state
列有NULL
值,这意味着state
数据与某些城市(例如:Beijing
, Hiroshima
和 London
)无关。
当使用非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;
执行上面示例查询语句,得到以下结果:
5、按函数或表达式排序数据
ORDER BY
子句可在一列上应用一个函数,例如字符串函数,数学函数等,并按函数的结果对数据进行排序。
例如,以下语句使用ORDER BY
子句中的UPPER()
函数来区分客户名称的大小写:
SELECT customer_id, name FROM customers ORDER BY UPPER( name );
执行上面查询语句,得到以下结果 -
推荐教程:《Oracle教程》
Atas ialah kandungan terperinci Cara mengisih hasil pertanyaan dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!