NodeJS 速習チュートリアル

Node.js MySQL 結果のソート

1. 結果のソート

MySQLで取得した結果をソート(並べ替え)するには、ORDER BY ステートメントを使用します。

ORDER BY キーワードは、デフォルト(既定)で結果を昇順(Ascending)にソートします。結果を降順(Descending)にソートしたい場合は、DESC キーワードを使用してください。

1.1 実装例:名前のアルファベット順(昇順)にソートする

以下のコードは、「customers」テーブルから全てのレコードを取得し、name カラムを基準にアルファベット順にソートする例です。

let mysql = require('mysql');

// データベース接続設定
let con = mysql.createConnection({
  host: "localhost",
  user: "ユーザー名",
  password: "パスワード",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  // ORDER BY を用いて名前順にソートするクエリを実行
  con.query("SELECT * FROM customers ORDER BY name", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

上記の内容を demo_db_orderby.js というファイル名で保存し、実行してください。

demo_db_orderby.js の実行

C:\Users\Your Name>node demo_db_orderby.js

実行すると、以下のように name カラムがアルファベット順に並んだ結果が表示されます。

[
  { id: 3, name: 'Amy', address: 'Apple st 652'},
  { id: 11, name: 'Ben', address: 'Park Lane 38'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'},
  { id: 13, name: 'Chuck', address: 'Main Road 989'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 1, name: 'John', address: 'Highway 71'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 9, name: 'Susan', address: 'One way 98'},
  { id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'},
  { id: 12, name: 'William', address: 'Central st 954'}
]

2. ORDER BY DESC (降順ソート)

結果を降順(逆順)にソートしたい場合は、DESC キーワードをステートメントの末尾に指定します。

2.1 実装例:名前の逆アルファベット順(降順)にソートする

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "ユーザー名",
  password: "パスワード",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  // DESCキーワードを使用して降順にソートするクエリ
  con.query("SELECT * FROM customers ORDER BY name DESC", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

上記の内容を demo_db_orderby_desc.js という名前のファイルで保存し、実行します。

demo_db_orderby_desc.js の実行

C:\Users\Your Name>node demo_db_orderby_desc.js

結果は以下の通り、name カラムが逆順にソートされて出力されます。

[
  { id: 12, name: 'William', address: 'Central st 954'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'},
  { id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
  { id: 9, name: 'Susan', address: 'One way 98'},
  { id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 2, name: 'Peter', address: 'Lowstreet 4'},
  { id: 5, name: 'Michael', address: 'Valley 345'},
  { id: 1, name: 'John', address: 'Highway 71'},
  { id: 4, name: 'Hannah', address: 'Mountain 21'},
  { id: 13, name: 'Chuck', address: 'Main Road 989'},
  { id: 7, name: 'Betty', address: 'Green Grass 1'},
  { id: 11, name: 'Ben', address: 'Park Lane 38'},
  { id: 3, name: 'Amy', address: 'Apple st 652'}
]