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'}
]