PostgreSQL の Order by 句
今日の記事では、テーブルの属性に基づいてテーブルの結果を並べ替える方法について説明します。 また、ORDER BY
句を使用してデータをソートする方法も示しています。 このコマンドを理解することから始めましょう。
PostgreSQL ORDER BY
句
それを理解するために、SELECT
ステートメントについて説明しましょう。 クエリに SELECT
ステートメントを記述すると、指定されたテーブルのステートメントに基づいてすべてのデータが返されます。
その結果のデータは、指定された順序なしで返されます。 データを特定の順序にしたい場合はどうすればよいでしょうか? SELECT
ステートメントでORDER BY
コマンドを使用します。
ORDER BY
コマンドを使用すると、テーブルの 1つまたは複数の属性に基づいてデータを並べ替えることができます。 その属性セットを使用して、昇順または降順で並べ替えることもできます。
これで、PostgreSQL の ORDER BY
コマンドを理解できたので、その使用に移りましょう。
PostgreSQL ORDER BY
句の使用
ORDER BY
コマンドは、SELECT
ステートメントと FROM
ステートメントの後に、クエリの残りの部分と共に記述されます。 このコマンドを使用するために知っておく必要がある重要な詳細がいくつかあります。
最初に、結果を並べ替えるためのパラメーターとして使用する列または列のセットを決定します。 解決しようとしている問題の範囲によって異なります。
この記事の後半で例を使用して説明します。 覚えておくべき重要な構文の詳細は、複数の属性をパラメーターとして使用する場合はコンマ (,
) を使用することです。
単一パラメータの構文:
ORDER BY column_name;
複数のパラメータの構文:
ORDER BY column1_name, column2_name;
複数のパラメーターが使用されている場合、ORDER BY
句は、最初のパラメーターに従って最初にデータセットをチェックすることに注意してください。
2つの値が最初のパラメーターに従って正確に順序付けされている場合、2 番目のパラメーターを使用してその類似性を排除し、結果のデータを並べ替えます。
次に、結果のデータを属性に基づいて昇順または降順で並べ替えることができます。 キーワード ASC
と DESC
は、それぞれ昇順または降順でソートするかどうかを定義します。
どちらも指定しない場合、デフォルトで昇順で並べられます。
昇順でソートするための構文:
ORDER BY column1_name ASC;
降順でソートするための構文:
ORDER BY column1_name DESC;
昇順と降順を一緒にソートするための構文:
ORDER BY column1_name ASC, column2_name DESC;
最後に、ORDER BY
句でパラメーターとして使用される属性/列に NULL
データがある場合です。 NULL
値を他の値の前または後に配置するかどうかを指定できます。
この操作には、キーワード NULLS LAST
および NULLS FIRST
が使用されます。 ASC
オプションを使用すると、デフォルトで NULLS LAST
が選択されます。
一方、DESC
オプションを使用すると、デフォルトで NULLS FIRST
が選択されます。 キーワードを追加することで、必要に応じて変更できます。
NULL
値を最初に置く構文:
ORDER BY column1_name ASC NULLS FIRST;
末尾に NULL
値を配置するための構文:
ORDER BY column1_name DESC NULLS LAST;
PostgreSQL ORDER BY
句の使用を示すコード例
例を通して説明するために、まず次のようにテーブルを作成します。
create table Orders(
id int,
name varchar(30) not null,
OrderAmount int not null,
constraint pk_customer primary key (id)
);
insert into Orders
values
(1,'Ben', 250),
(2, 'James', 350),
(3, 'Carl', 550),
(4, 'Adam', 550);
select * from Orders;
出力:
テーブルが作成されたので、ORDER BY
コマンドを使用するすべての可能な方法 (上記で説明) を示しましょう。
1つの式を使用する PostgreSQL ORDER BY
コマンド
次のコードは、注文の価格でソートされたOrders
テーブルから顧客の名前と合計支出を表示します。
OrderAmount
の昇順の場合
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount ASC;
出力:
OrderAmount
の降順の場合
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC;
出力:
複数の式を使用した PostgreSQL ORDER BY
コマンド
次のコードは、注文の価格と顧客名でソートされた Orders
テーブルから顧客の名前と合計支出を表示します。
昇順で並べ替え
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount, name;
出力:
降順で並べ替える
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name DESC;
出力:
昇順と降順の両方
SELECT name, OrderAmount
FROM Orders
ORDER BY OrderAmount DESC, name ASC;
出力:
NULL
属性値を指定した PostgreSQL ORDER BY
コマンド
以下に示す例では、null
値を持つ新しいテーブルを使用します。
create table NULLTEST(
name varchar(30) not null,
number_ int
);
insert into NULLTEST
values
('Jack', 250),
('Maguire', 350),
('Walker', 550),
('Michael', NULL);
select * from NULLTEST;
出力:
次のコードは、name
と number_
を number_
列の値でソートし、NULL
値を最初に表示します。
SELECT name, number_
FROM NULLTEST
ORDER BY number_ ASC NULLS FIRST;
出力:
ORDER BY
の降順オプションで NULL FIRST
を使用する必要はありません。この場合、デフォルトで NULL
値が最初に表示されるからです。 次のコードは、name
と number_
を number_
列の値でソートし、NULL
値を表示します。
SELECT name, number_
FROM NULLTEST
ORDER BY number_ DESC NULLS LAST;
ここで、NULLS LAST
を昇順オプション ORDER BY
とともに使用する必要はありません。この場合、デフォルトで NULL
値が最後に表示されるからです。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub