Oracle에서는 "SELECT" 문과 "ORDER BY" 절을 사용하여 하나의 열 또는 여러 열의 쿼리 결과 집합을 오름차순 또는 내림차순으로 정렬할 수 있습니다. 구문은 "SELECT 필드입니다. 이름 FROM 데이터 테이블 이름. ORDER BY 필드 이름 [ASC|DESC]".
이 튜토리얼의 운영 환경: Windows 7 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
Oracle에서는 "SELECT" 문과 "ORDER BY" 절을 사용하여 쿼리 정렬을 수행할 수 있습니다.
Oracle에서는 행이 데이터베이스에 삽입되는 순서와 관계없이 행 데이터 레코드가 지정되지 않은 순서로 테이블에 저장됩니다. 행 레코드를 열별로 오름차순 또는 내림차순으로 쿼리하려면 Oracle 데이터베이스에 정렬 방법을 명시적으로 지시해야 합니다.
예를 들어 모든 고객을 이름의 알파벳순으로 나열하거나 모든 고객을 낮은 신용 한도에서 높은 신용 한도 순으로 표시할 수 있습니다.
쿼리된 데이터를 정렬하려면 다음과 같이 SELECT 문에 ORDER BY
절을 추가하세요. ORDER BY
子句添加到SELECT语句中。
ORDER BY
子句可以按升序或降序对一列或多列的结果集进行排序。
语法:
SELECT 字段名, FROM table_name ORDER BY 字段名 [ASC | DESC] [NULLS FIRST | NULLS LAST]
要按列排序结果集,可以在ORDER BY子句之后列出该列。
按照列名是一个排序顺序,可以是:
ASC
表示按升序排序
DESC
表示按降序排序
默认情况下,无论是否指定ASC
,ORDER BY
子句都按升序对行进行排序。如果要按降序对行进行排序,请明确使用DESC
。
NULLS FIRST
在非NULL
值之前放置NULL
值,NULLS LAST
在非NULL
值之后放置NULL
值。
ORDER BY
子句可以按多列对数据进行排序,每列可能有不同的排序顺序。
请注意,ORDER BY
子句总是SELECT
语句中的最后一个子句。
下面将使用示例数据库中的customers
表进行演示。
以下语句从客户(customers
)表中检索客户的:name
, address
和 credit limit
:
SELECT name, address, credit_limit FROM customers;
执行上面查询语句,得到以下结果 -
正如截图中所看到的,行记录的顺序是未指定的。
1、按列排序行示例
要按照字母顺序按升序排列客户名称,请使用以下语句:
SELECT name,address,credit_limit FROM customers ORDER BY name ASC;
执行上面示例代码,得到以下结果 -
ASC
指示Oracle按升序对行进行排序。但是ASC
是可选的,如果省略,则在默认情况下,ORDER BY
子句按指定的列按升序对行进行排序。
因此,下面的表达式:
ORDER BY name ASC
等效于 -
ORDER BY name
要按字母顺序降序排列客户名称,请在ORDER BY
子句中的列名之后显式使用DESC
,如下所示:
SELECT name, address, credit_limit FROM customers ORDER BY name DESC;
执行上面查询语句,得到以下结果 -
2、按多个列排序行示例
要对多列进行排序,可以用逗号分隔ORDER BY
子句中的每列。
请参阅示例数据库中的以下联系人(contacts
)表。
例如,要按first_name
进行按升序排序,并按降序对last_name
列进行排序,请使用以下语句:
SELECT first_name, last_name FROM contacts ORDER BY first_name, last_name DESC;
执行上面示例代码,可以看到如下结果 -
从上面截图中可以看到,contact_id
为91
和311
这两条记录的first_name
的值相同,last_name
的值是以降序来排列的。
在这个例子中,Oracle首先按first_name
升序对行进行排序,以创建初始结果集。 然后Oracle按降序对last_name
ORDER BY
절은 하나 이상의 열의 결과 집합을 오름차순 또는 내림차순으로 정렬할 수 있습니다. 구문: SELECT name, credit_limit,address FROM customers ORDER BY 2 DESC, 1;열을 기준으로 결과 집합을 정렬하려면 ORDER BY 절 뒤에 열을 나열하면 됩니다.
열 이름에 따른 정렬 순서입니다.
ASC
는 오름차순 정렬을 의미합니다. 🎜DESC
는 내림차순 정렬을 의미합니다🎜ASC
지정 여부에 관계없이 ORDER BY 절은 모두 행을 오름차순으로 정렬합니다. 행을 내림차순으로 정렬하려면 DESC
를 명시적으로 사용하세요. NULLS FIRST
는 NULL
값을 NULL
이 아닌 값 앞에 배치하고 NULLS LAST
앞에 배치합니다. non-NULL 값 뒤에 NULL
값을 입력하세요. 🎜🎜 ORDER BY
절은 여러 열을 기준으로 데이터를 정렬할 수 있으며, 각 열은 서로 다른 정렬 순서를 가질 수 있습니다. 🎜🎜 ORDER BY
절은 항상 SELECT
문의 마지막 절이라는 점에 유의하세요. 🎜customers
테이블을 사용합니다. 🎜🎜🎜🎜The 다음 문은 고객(고객
) 테이블에서 고객의 이름
, 주소
및 신용 한도
를 검색합니다. 🎜 SELECT name, credit_limit,address FROM customers ORDER BY credit_limit DESC, name;🎜 위 쿼리문을 실행하면 다음과 같은 결과가 나옵니다-🎜🎜🎜🎜스크린샷에서 볼 수 있듯이 행 레코드의 순서는 지정되지 않습니다. 🎜🎜1. 행을 열별로 정렬하는 예🎜🎜고객 이름을 알파벳순으로 오름차순으로 정렬하려면 다음 명령문을 사용하세요. 🎜
SELECT country_id, city, state FROM locations ORDER BY state DESC;🎜위 예제 코드를 실행하면 다음과 같은 결과가 나옵니다-🎜🎜🎜🎜
ASC
는 Oracle에 행을 오름차순으로 정렬하도록 지시합니다. 그러나 ASC
는 선택 사항이며 생략할 경우 기본적으로 ORDER BY
절은 지정된 열을 기준으로 오름차순으로 행을 정렬합니다. 🎜🎜따라서 다음 표현식: 🎜SELECT country_id, city, state FROM locations ORDER BY state ASC NULLS FIRST;🎜은 -🎜
SELECT country_id, city, state FROM locations ORDER BY state ASC NULLS LAST;🎜와 동일합니다. 고객 이름을 알파벳 내림차순으로 정렬하려면
ORDER BY
절 code>에서 열 이름 뒤에 를 명시적으로 사용합니다. DESC
, 아래와 같이: 🎜SELECT customer_id, name FROM customers ORDER BY UPPER( name );🎜위 쿼리문을 실행하면 다음과 같은 결과를 얻습니다.🎜🎜🎜🎜2. 행을 여러 열로 정렬하는 예 span>🎜🎜여러 열을 정렬하려면
ORDER BY
절의 각 열을 쉼표로 구분하면 됩니다. 🎜🎜샘플 데이터베이스에서 다음 연락처(연락처
) 테이블을 참조하세요. 🎜🎜예를 들어 first_name
을 기준으로 오름차순으로 정렬하고 last_name
열을 내림차순으로 정렬하려면 다음 문을 사용하세요. 🎜rrreee🎜위의 예제 코드를 실행하면 다음과 같은 작업을 수행할 수 있습니다. 다음 결과 얻기-🎜🎜를 참조하세요.🎜🎜위 스크린샷에서 볼 수 있듯이 contact_id
는 두 레코드 91
및 311first_name
입니다. /code> 값은 동일하며, last_name
값이 내림차순으로 정렬되어 있습니다. 🎜🎜이 예에서 Oracle은 먼저 first_name
을 기준으로 행을 오름차순으로 정렬하여 초기 결과 집합을 생성합니다. 그런 다음 Oracle은 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教程》
위 내용은 Oracle에서 쿼리 결과를 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!