Node.js MySQL 結果の制限
1. 結果の制限
クエリから返されるレコード(Record)の数を制限するには、LIMIT ステートメントを使用します。
1.1 実装例:「customers」テーブルから最初の5件を取得する
以下のコードは、データベースから最初の5つのレコードのみを抽出する例です。
let mysql = require('mysql');
// データベース接続設定
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名", // あなたのMySQLユーザー名
password: "パスワード", // あなたのMySQLパスワード
database: "mydb" // 操作対象のデータベース名
});
con.connect(function(err) {
if (err) throw err;
// LIMIT句を使用して取得件数を5件に制限
let sql = "SELECT * FROM customers LIMIT 5";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
});上記の内容を demo_db_limit.js というファイル名で保存し、実行してください。
demo_db_limit.js の実行
C:\Users\Your Name>node demo_db_limit.js実行すると、以下のように最初の5件のデータが配列形式で表示されます。
[
{ id: 1, name: 'John', address: 'Highway 71'},
{ id: 2, name: 'Peter', address: 'Lowstreet 4'},
{ id: 3, name: 'Amy', address: 'Apple st 652'},
{ id: 4, name: 'Hannah', address: 'Mountain 21'},
{ id: 5, name: 'Michael', address: 'Valley 345'}
]2. 別の位置から開始する (OFFSET)
「3番目のレコードから始めて5件取得したい」というように、開始位置を指定してデータを取得したい場合は、OFFSET キーワードを使用します。
2.1 実装例:3番目の位置から5件取得する
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
// 2件スキップ(OFFSET 2)し、そこから5件取得する
let sql = "SELECT * FROM customers LIMIT 5 OFFSET 2";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
}); 注意:OFFSET 2 は、「3番目の位置から開始する」ことを意味します(インデックスが0から始まるため、0と1をスキップします)。
上記の内容を demo_db_offset.js というファイル名で保存し、実行してください。
demo_db_offset.js の実行
C:\Users\Your Name>node demo_db_offset.js結果は以下のようになります。
[
{ id: 3, name: 'Amy', address: 'Apple st 652'},
{ id: 4, name: 'Hannah', address: 'Mountain 21'},
{ id: 5, name: 'Michael', address: 'Valley 345'},
{ id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
{ id: 7, name: 'Betty', address: 'Green Grass 1'}
]3. 短縮構文 (Shorter Syntax)
SQLでは、LIMIT 2, 5 のように記述することも可能です。これは上記の LIMIT 5 OFFSET 2 と全く同じ結果を返します。
3.1 実装例:短縮記法による範囲指定
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
// 「LIMIT 開始位置, 件数」の順で指定
let sql = "SELECT * FROM customers LIMIT 2, 5";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
}); 注意: 数値の順番が入れ替わっている点に注意してください。LIMIT 2, 5 は LIMIT 5 OFFSET 2 と同義です。最初の数値が「スキップする数(OFFSET)」、2番目の数値が「取得する上限数(LIMIT)」となります。