English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQLソート

MySQLのテーブルからデータを読み取るためにSQL SELECT 文を使用すると知っています。

データの並べ替えが必要な場合、MySQLの ORDER BY 子句を使用して、検索結果にどのフィールドでどの順序で並べ替えを行いたいかを設定し、検索結果を返します。

文法

以下は、SQL SELECT 文で ORDER BY 子句を使用してクエリデータを並べ替え、その後データを返す例です:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [昇順 [降順][デフォルト 昇順]], [field2...] [昇順 [降順][デフォルト 昇順]]
  • 並べ替え条件としてどんなフィールドを使用しても、並べ替えされたクエリ結果を返すことができます。

  • 複数のフィールドを並べ替え設定できます。

  • ASC または DESC キーワードを使用して、クエリ結果が昇順または降順に並べ替えられるように設定できます。デフォルトでは、昇順です。

  • WHERE...LIKE 子句を追加して条件を設定できます。

コマンドプロンプトで ORDER BY 子句を使用

以下は、SQL SELECT 文で ORDER BY 子句を使用して MySQL データテーブル w3codebox_tbl 中的データ:

オンラインサンプル

試行以下例,結果將按昇順及降順排列。

mysql> use w3codebox;
Database changed
MariaDB [w3codebox]> SELECT * from w3codebox_tbl ORDER BY submission_date ASC;
+----------+-------------+--------------+-----------------+
| w3codebox_id | w3codebox_title | w3codebox_author | submission_date |
+----------+-------------+--------------+-----------------+
|        1 | PHPを学ぶ    | oldtoolbag.com    | 2018-04-14      |
|        2 | MySQLを学ぶ | oldtoolbag.com    | 2018-04-14      |
|        3 | JAVA チュートリアル   | oldtoolbag.com    | 2018-04-14      |
|        4 | Pythonを学ぶ | oldtoolbag.com    | 2019-06-08      |
+----------+-------------+--------------+-----------------+
4 rows in set (0.00 sec)
MariaDB [w3codebox]> SELECT * from w3codebox_tbl ORDER BY submission_date DESC;
+----------+-------------+--------------+-----------------+
| w3codebox_id | w3codebox_title | w3codebox_author | submission_date |
+----------+-------------+--------------+-----------------+
|        4 | Pythonを学ぶ | oldtoolbag.com    | 2019-06-08      |
|        1 | PHPを学ぶ    | oldtoolbag.com    | 2018-04-14      |
|        2 | MySQLを学ぶ | oldtoolbag.com    | 2018-04-14      |
|        3 | JAVA チュートリアル   | oldtoolbag.com    | 2018-04-14      |
+----------+-------------+--------------+-----------------+
4 rows in set (0.02 sec)

w3codebox_tblのすべてのデータを submission_date フィールドの昇順に並べ替えて読み取ります。

PHPスクリプト内でORDER BY子句を使用する

PHP関数のmysqli_query()と同じSQL SELECTにORDER BY子句を付けてデータを取得できます。

この関数は、SQLコマンドを実行し、PHP関数mysqli_fetch_array()を通じてすべてのクエリデータを出力するために使用されます。

オンラインサンプル

以下の例を試してみてください、データをクエリした後、submission_date フィールドの降順に並べ替えて返します。

<?php
$dbhost = 'localhost';  // MySQLのサーバー主机のアドレス
$dbuser = 'root';            // MySQLのユーザー名
$dbpass = '123456';          // MySQLのユーザー名とパスワード
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('接続失敗: ' . mysqli_error($conn));
}
// 設定エンコーディング、中国語の乱マークを防ぐ
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl
        ORDER BY  submission_date ASC';
 
mysqli_select_db( $conn, 'w3codebox' );
$retval = mysqli_query( $conn, $sql );}
if(! $retval )
{
    die('データ読み取りエラー: ' . mysqli_error($conn));
}
echo '<h2>基本チュートリアルネットワークMySQLORDERBYテスト<h2>
echo '<table border="1><tr><td>チュートリアルID</td><td>タイトル</td><td>著者</td><td>提出日付</td></tr>';
while($row = mysqli_fetch_array($retval))
{
    echo "<tr><td> {$row['w3codebox_id']}</td> ".
         "<td>{$row['w3codebox_title']} </td> ".
         "<td>{$row['w3codebox_author']} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

出力結果は以下のようになります: