MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでSELECTクエリの結果を並べ替える方法|ORDER BY句の基本と実践例

データベース操作では、テーブルから特定のデータや行を抽出することが日常的によくあります。通常、SELECT文で取得した行はテーブル内に格納されている順序で返されますが、場合によっては、特定の列を基準にして昇順または降順で並べ替えた結果を取得したいこともあるでしょう。

そんなときに活躍するのが「ORDER BY」句です。以下で具体的な使い方を見ていきましょう。

例えば、「name」フィールドを含む複数のカラムを持つテーブルがあるとします。テーブルからすべての行を取得したいけれど、名前のアルファベット順に並べ替えた状態で結果を受け取りたい——こうしたケースでは、ORDER BY句を使って「name」フィールドの昇順に並べ替えます。

ORDER BY句は、デフォルトでは指定したカラムを昇順(ASC)で並べ替えます。逆に降順で並べ替えたい場合は、キーワード「DESC」を明示的に指定する必要があります。

基本構文

昇順で並べ替える場合

SELECT * FROM table_name ORDER BY column_name

降順で並べ替える場合

SELECT * FROM table_name ORDER BY column_name DESC

PythonでMySQLのデータを並べ替えて取得する手順

  • MySQLコネクタをインポートする

  • connect()メソッドでデータベースへの接続を確立する

  • cursor()メソッドでカーソルオブジェクトを作成する

  • 適切なSQLステートメントでクエリを作成する

  • execute()メソッドでSQLクエリを実行する

  • 接続を閉じる

ここで、次のような「Student」テーブルがあると仮定します。

+----------+---------+-----------+------------+
|    Name  |   Class |     City  | Marks      |
+----------+---------+-----------+------------+
|    Karan |    4    | Amritsar  |    95      |
|    Sahil |    6    | Amritsar  |    93      |
|    Kriti |    3    |  Batala   |    88      |
|  Khushi  |    9    |   Delhi   |    90      |
|    Kirat |    5    |   Delhi   |    85      |
+----------+---------+-----------+------------+

サンプルコード

テーブルからすべての行を取得しつつ、名前のアルファベット順(昇順)に並べ替えて表示してみましょう。

import mysql.connector

db=mysql.connector.connect(host="your host", user="your username", password="your
password",database="database_name")

cursor=db.cursor()

query= "SELECT * FROM Students ORDER BY Name"
cursor.execute(query)
for row in cursor:
    print(row)

上記のコードを正常に実行すると、生徒の名前のアルファベット順(昇順)に並べ替えられた行が出力されます。

実行結果

('Amit' , 9 , 'Delhi' , 90)
('Karan', 4 ,'Amritsar' , 95)
('Kriti' , 3 , 'Batala' ,88)
('Priya' , 5 , 'Delhi' ,85)
('Sahil' , 6 , 'Amritsar' ,93)

表示されたすべての行が、名前のアルファベット順に並んでいるのが確認できます。同じ構文を使えば、例えば「Marks」(点数)カラムを基準に昇順・降順で並べ替えることも簡単に可能です。

  1. MySQLでクエリ結果をランダムに並べ替え、ランダムな行を選択する方法

    MySQLでクエリの結果をランダムに並べ替えたい場合は、ORDER BY RAND() を使用します。WHERE句で絞り込んだ結果に対してランダムな順序を適用し、LIMIT句と組み合わせることで、指定した件数の行をランダムに取得できます。基本構文select * from DemoTable1559 where yourColumnName IN(yourValue1,yourValue2,....N) order by rand() limit yourLimitValue;サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。mysql> create table Dem

  2. MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説

    MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var