>  기사  >  데이터 베이스  >  Oracle에서 쿼리 결과를 정렬하는 방법

Oracle에서 쿼리 결과를 정렬하는 방법

青灯夜游
青灯夜游원래의
2022-01-13 11:33:4318555검색

Oracle에서는 "SELECT" 문과 "ORDER BY" 절을 사용하여 하나의 열 또는 여러 열의 쿼리 결과 집합을 오름차순 또는 내림차순으로 정렬할 수 있습니다. 구문은 "SELECT 필드입니다. 이름 FROM 데이터 테이블 이름. ORDER BY 필드 이름 [ASC|DESC]".

Oracle에서 쿼리 결과를 정렬하는 방법

이 튜토리얼의 운영 환경: 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 表示按降序排序

默认情况下,无论是否指定ASCORDER BY子句都按升序对行进行排序。如果要按降序对行进行排序,请明确使用DESC

NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。

ORDER BY子句可以按多列对数据进行排序,每列可能有不同的排序顺序。

请注意,ORDER BY子句总是SELECT语句中的最后一个子句。

Oracle ORDER BY子句的例子

下面将使用示例数据库中的customers表进行演示。

Oracle에서 쿼리 결과를 정렬하는 방법

以下语句从客户(customers)表中检索客户的:name, addresscredit limit

SELECT name, address, credit_limit FROM customers;

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

Oracle에서 쿼리 결과를 정렬하는 방법

正如截图中所看到的,行记录的顺序是未指定的。

1、按列排序行示例

要按照字母顺序按升序排列客户名称,请使用以下语句:

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

执行上面示例代码,得到以下结果 -

Oracle에서 쿼리 결과를 정렬하는 방법

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;

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

Oracle에서 쿼리 결과를 정렬하는 방법

2、按多个列排序行示例

要对多列进行排序,可以用逗号分隔ORDER BY子句中的每列。

请参阅示例数据库中的以下联系人(contacts)表。

例如,要按first_name进行按升序排序,并按降序对last_name列进行排序,请使用以下语句:

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

执行上面示例代码,可以看到如下结果 -

Oracle에서 쿼리 결과를 정렬하는 방법

从上面截图中可以看到,contact_id91311这两条记录的first_name的值相同,last_name的值是以降序来排列的。

在这个例子中,Oracle首先按first_name升序对行进行排序,以创建初始结果集。 然后Oracle按降序对last_name

ORDER BY 절은 하나 이상의 열의 결과 집합을 오름차순 또는 내림차순으로 정렬할 수 있습니다.

구문: ​​

SELECT name, credit_limit,address
FROM customers
ORDER BY 2 DESC, 1;
Oracle에서 쿼리 결과를 정렬하는 방법열을 기준으로 결과 집합을 정렬하려면 ORDER BY 절 뒤에 열을 나열하면 됩니다.

열 이름에 따른 정렬 순서입니다.

  • 🎜ASC는 오름차순 정렬을 의미합니다. 🎜
  • 🎜DESC는 내림차순 정렬을 의미합니다🎜
🎜기본적으로 ASC 지정 여부에 관계없이 ORDER BY 절은 모두 행을 오름차순으로 정렬합니다. 행을 내림차순으로 정렬하려면 DESC를 명시적으로 사용하세요.
🎜🎜NULLS FIRSTNULL 값을 NULL이 아닌 값 앞에 배치하고 NULLS LAST 앞에 배치합니다. non-NULL 값 뒤에 NULL 값을 입력하세요. 🎜🎜 ORDER BY 절은 여러 열을 기준으로 데이터를 정렬할 수 있으며, 각 열은 서로 다른 정렬 순서를 가질 수 있습니다. 🎜🎜 ORDER BY 절은 항상 SELECT 문의 마지막 절이라는 점에 유의하세요. 🎜

Oracle ORDER BY 절의 예

🎜다음은 데모용 샘플 데이터베이스의 customers 테이블을 사용합니다. 🎜🎜Oracle에서 쿼리 결과를 정렬하는 방법🎜🎜The 다음 문은 고객(고객) 테이블에서 고객의 이름, 주소신용 한도를 검색합니다. 🎜
SELECT name, credit_limit,address
FROM customers
ORDER BY credit_limit DESC, name;
🎜 위 쿼리문을 실행하면 다음과 같은 결과가 나옵니다-🎜🎜 Oracle에서 쿼리 결과를 정렬하는 방법🎜🎜스크린샷에서 볼 수 있듯이 행 레코드의 순서는 지정되지 않습니다. 🎜🎜1. 행을 열별로 정렬하는 예🎜🎜고객 이름을 알파벳순으로 오름차순으로 정렬하려면 다음 명령문을 사용하세요. 🎜
SELECT country_id, city, state
FROM locations 
ORDER BY state DESC;
🎜위 예제 코드를 실행하면 다음과 같은 결과가 나옵니다-🎜🎜Oracle에서 쿼리 결과를 정렬하는 방법🎜🎜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 );
🎜위 쿼리문을 실행하면 다음과 같은 결과를 얻습니다.🎜🎜Oracle에서 쿼리 결과를 정렬하는 방법🎜🎜2. 행을 여러 열로 정렬하는 예 span>🎜🎜여러 열을 정렬하려면 ORDER BY 절의 각 열을 쉼표로 구분하면 됩니다. 🎜🎜샘플 데이터베이스에서 다음 연락처(연락처) 테이블을 참조하세요. 🎜🎜예를 들어 first_name을 기준으로 오름차순으로 정렬하고 last_name 열을 내림차순으로 정렬하려면 다음 문을 사용하세요. 🎜rrreee🎜위의 예제 코드를 실행하면 다음과 같은 작업을 수행할 수 있습니다. 다음 결과 얻기-🎜🎜를 참조하세요.Oracle에서 쿼리 결과를 정렬하는 방법 🎜🎜위 스크린샷에서 볼 수 있듯이 contact_id는 두 레코드 91311first_name입니다. /code> 값은 동일하며, last_name 값이 내림차순으로 정렬되어 있습니다. 🎜🎜이 예에서 Oracle은 먼저 first_name을 기준으로 행을 오름차순으로 정렬하여 초기 결과 집합을 생성합니다. 그런 다음 Oracle은 last_name의 초기 결과 집합을 내림차순으로 정렬합니다. 🎜🎜아래와 유사한 결과 보기: 🎜🎜🎜🎜🎜위 결과에서: 🎜
  • 首先,按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)表:

Oracle에서 쿼리 결과를 정렬하는 방법

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

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

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

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;

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

Oracle에서 쿼리 결과를 정렬하는 방법

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

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

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

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

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

Oracle에서 쿼리 결과를 정렬하는 방법

推荐教程:《Oracle教程

위 내용은 Oracle에서 쿼리 결과를 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.