Hướng dẫn set limit javascript - đặt giới hạn javascript

Bạn có thể giới hạn số lượng bản ghi được trả về từ truy vấn, bằng cách sử dụng câu lệnh "LIMIT".

Ví dụ sau sẽ lấy 3 bản ghi đầu tiên trong bảng "customers":

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "nodejs_db"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 3";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Lưu mã ở trên vào tệp có tên "demo_db_limit.js" và chạy tệp:

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

Kết quả:

[  RowDataPacket { name: 'V1Study', address: 'Hà Nội', id: 1 },  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]  RowDataPacket { name: 'V1Study', address: 'Hà Nội', id: 1 },  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]
  RowDataPacket { name: 'V1Study', address: 'Hà Nội', id: 1 },
  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },
  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }
]

Bắt đầu từ một vị trí khác

Nếu bạn muốn trả về 2 bản ghi bắt đầu từ bản ghi thứ 2 thì bạn có thể sử dụng từ khóa "OFFSET" như ví dụ sau:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 2 OFFSET 1";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Lưu ý: "OFFSET 1", có nghĩa là bắt đầu từ vị trí thứ hai, không phải thứ nhất!

Lưu mã ở trên vào một tệp có tên "demo_db_offset.js" và chạy tệp:

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

Kết quả:

[  RowDataPacket { name: 'V1Study', address: 'Hà Nội', id: 1 },  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]  RowDataPacket { name: 'V1Study', address: 'Hà Nội', id: 1 },  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]
  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },
  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }
]

Bắt đầu từ một vị trí khác

Nếu bạn muốn trả về 2 bản ghi bắt đầu từ bản ghi thứ 2 thì bạn có thể sử dụng từ khóa "OFFSET" như ví dụ sau:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 1, 2";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Lưu ý: "OFFSET 1", có nghĩa là bắt đầu từ vị trí thứ hai, không phải thứ nhất!

Lưu mã ở trên vào một tệp có tên "demo_db_offset.js" và chạy tệp:

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

[  RowDataPacket { name: 'V1Study', address: 'Hà Nội', id: 1 },  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]

[  RowDataPacket { name: 'Long', address: 'Hà Nội', id: 2 },  RowDataPacket { name: 'Phương', address: 'Hà Nam', id: 3 }]

CREATE DATABASE demo;
CREATE TABLE demo.customer (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255));

Cú pháp ngắn hơn

INSERT INTO `demo`.`customer` (`name`, `address`) VALUES ('kai', 'ha noi - viet nam');
INSERT INTO `demo`.`customer` (`name`, `address`) VALUES ('sena', 'vinh phuc - viet nam');
INSERT INTO `demo`.`customer` (`name`, `address`) VALUES ('iron man', 'new york - usa');
INSERT INTO `demo`.`customer` (`name`, `address`) VALUES ('batman', 'gotham - usa');
INSERT INTO `demo`.`customer` (`name`, `address`) VALUES ('bruce lee', 'hong kong - china');

Hướng dẫn set limit javascript - đặt giới hạn javascript

Bạn cũng có thể viết câu lệnh SQL của mình như thế này "LIMIT 1, 2", và nó cũng sẽ trả về kết quả giống như ví dụ sử dụng OFFSET ở trên:

Lưu ý: "LIMIT 1, 2" tương đương với "LIMIT 2 OFFSET 1".

Code ví dụ Node.js MySQL – Phân trang với LIMIT, OFFSET

Khi muốn phân trang (paging) thì ta xác định số phần tử của 1 trang và số phần tử được skip.
Câu lệnh SQL trong ví dụ này sẽ là "SELECT * FROM customer LIMIT 10 OFFSET 20"

Ví dụ 1 trang có 10 phần tử, và muốn query trang thứ 3 thì ta cần skip qua 2 trang đầu tức là skip qua 20 phần tử (OFFSET = 20). Kích thước trang là 10 nên giá trị LIMIT sẽ là 10. Câu lệnh SQL trong ví dụ này sẽ là "SELECT * FROM customer LIMIT 10 OFFSET 20" Câu lệnh SQL trong ví dụ này sẽ là "SELECT * FROM customer LIMIT 10 OFFSET 20"

Code ví dụ Node.js MySQL Paging.

Trong ví dụ này mình sẽ sử dụng database đã tạo bên trên. Thực hiện query 2 bản ghi kể từ bản ghi thứ 2:

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  port: "3306",
  user: "root",
  password: "admin1234",
  database: "demo"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
});

var sql = "SELECT * FROM customer LIMIT 2 OFFSET 2";

con.query(sql, function (err, result, fields) {
  if (err) throw err;
  console.log(result);
});

  
con.end(function(err) {
  if (err) throw err;
  console.log("Closed!");
});

(nhớ phải cài module mysql trước nhé

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  var sql = "SELECT * FROM customers LIMIT 2 OFFSET 1";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});
0