HOWTO · MySQL

MySQL データをアルファベット順に並べ替える

このチュートリアルでは、MySQL サーバーのデータをアルファベット順に並べ替える方法を示します。

このページの内容

MySQL の行を名前順に A から Z へ取得するには、SELECT クエリにテキスト列を指定し、その後に ORDER BY を追加します。昇順はデフォルトです。Z から A へ逆順にするには DESC を追加します。以下の例では、student_details テーブルの stu_firstName 列を使います。

MySQL でテーブルを作成する

サンプルテーブルには、ID、名、姓の列があります。作成するには、CREATE TABLE student_details (stu_id INT, stu_firstName VARCHAR(255) DEFAULT NULL, stu_lastName VARCHAR(255) DEFAULT NULL, PRIMARY KEY (stu_id)); を実行します。次に、INSERT INTO student_details (stu_id, stu_firstName, stu_lastName) VALUES (1, 'Preet', 'Sanghavi'), (2, 'Rich', 'John'), (3, 'Veron', 'Brow'), (4, 'Geo', 'Jos'), (5, 'Hash', 'Shah'), (6, 'Sachin', 'Parker'), (7, 'David', 'Miller'); でサンプルレコードを追加します。主キーにより各学生の行に個別の ID が割り当てられます。名前は並べ替えの例で使います。これらは SQL 文の例です。実際の結果は MySQL データベースで実行した場合に得られます。

挿入した行を確認するには、SELECT * FROM student_details; を実行します。このクエリでは並び順を指定していないため、データベースはアルファベット順以外の順序で行を返すことがあります。挿入順が保証されると考えず、クエリごとに必要な順序を指定してください。

MySQL データベースのデータをアルファベット順に並べ替える

並べ替えに使う句は ORDER BY です。ORDER だけでは不十分です。一般的な構文は SELECT columns FROM table_name ORDER BY column_name; です。この例では、SELECT stu_firstName FROM student_details ORDER BY stu_firstName; として名だけを選択します。昇順がデフォルトなので、名前は A から Z のアルファベット順に並びます。結果の名前の順序は David、Geo、Hash、Preet、Rich、Sachin、Veron です。

並び順を明示するには ASC を指定できます。たとえば、SELECT stu_firstName FROM student_details ORDER BY stu_firstName ASC; と書きます。これは方向を省略した場合と同じ昇順です。ASC と DESC は、ORDER BY 句で列名の後に続ける方向指定のキーワードです。

逆順にするには DESC を追加します。SELECT stu_firstName FROM student_details ORDER BY stu_firstName DESC; の結果は Veron、Sachin、Rich、Preet、Hash、Geo、David です。これは Z から A へ向かう降順です。並び順の指定によって変わるのは返される行の順序であり、保存された値ではありません。テーブル自体が並べ替えられるわけではありません。この例では stu_firstName だけを選択するため、結果には名前の列だけが含まれます。並べ替えた結果にほかの情報も表示する場合は、SELECT リストに stu_id や stu_lastName を追加します。並べ替えに使う列は、引き続き ORDER BY の後に指定した列です。

クエリを自分のデータに合わせるには、student_details をテーブル名に、stu_firstName を並べ替えたいテキスト列名に置き換えます。ほかの列も取得する場合は、SELECT stu_firstName, stu_lastName FROM student_details ORDER BY stu_firstName; のように、並べ替えに使う列を ORDER BY 句に指定します。A から Z の順にするにはデフォルトの方向か ASC を使い、逆順には DESC を使います。テキスト値の実際の並び順は、その列の MySQL の照合順序に従います。この基本例は提示された英語名を対象としており、言語ごとの並べ替え規則を定義するものではありません。

クエリで行を絞り込む場合は WHERE の後に ORDER BY を置き、返す行数を制限する場合は並べ替え句の後に LIMIT を置きます。構文の例は SELECT columns FROM table_name WHERE condition ORDER BY column_name DESC LIMIT row_count; です。MySQL はまず条件に合う行を絞り込み、次にその行を並べ替え、最後に指定された数まで返します。並べ替えに使う列はクエリで利用できる必要があり、方向指定はその列名の後に置きます。