EN
Node.js - PostgreSQL - select last N rows
0
points
In this article, we would like to show you how to select the lastΒ N rows in the PostgreSQL database usingΒ Node.js.
Note:Β at the end of this article you can find database preparation SQL queries.
Β Ascending order
const { Client } = require('pg');
const client = new Client({
host: '127.0.0.1',
user: 'postgres',
database: 'database_name',
password: 'password',
port: 5432,
});
const getLastUsers = async (count) => {
const query = `
SELECT * FROM (
SELECT * FROM "users"
ORDER BY "id" DESC
LIMIT $1
) subquery
ORDER BY "id" ASC;
`;
try {
await client.connect(); // gets connection
const { rows } = await client.query(query, [count]); // sends query
console.table(rows);
} catch (error) {
console.error(error.stack);
} finally {
await client.end(); // closes connection
}
};
getLastUsers(3); // get last 3 users in ascending order
Result:Β
βββββββββββ¬βββββ¬ββββββββββ¬ββββββββββββ
β (index) β id β name β country β
βββββββββββΌβββββΌββββββββββΌββββββββββββ€
β 0 β 5 β 'Marco' β 'Italy' β
β 1 β 6 β 'Kate' β 'Spain' β
β 2 β 7 β 'Nam' β 'Vietnam' β
βββββββββββ΄βββββ΄ββββββββββ΄ββββββββββββ
Descending order
const { Client } = require('pg');
const client = new Client({
host: '127.0.0.1',
user: 'postgres',
database: 'database_name',
password: 'password',
port: 5432,
});
const getLastUsers = async (count) => {
const query = `SELECT *
FROM "users"
ORDER BY "id" DESC
LIMIT $1;`;
try {
await client.connect(); // gets connection
const { rows } = await client.query(query, [count]); // sends query
console.table(rows);
} catch (error) {
console.error(error.stack);
} finally {
await client.end(); // closes connection
}
};
getLastUsers(3); // get last 3 users in descending order
Result:Β
βββββββββββ¬βββββ¬ββββββββββ¬ββββββββββββ
β (index) β id β name β country β
βββββββββββΌβββββΌββββββββββΌββββββββββββ€
β 0 β 7 β 'Nam' β 'Vietnam' β
β 1 β 6 β 'Kate' β 'Spain' β
β 2 β 5 β 'Marco' β 'Italy' β
βββββββββββ΄βββββ΄ββββββββββ΄ββββββββββββ
Database preparation
create_tables.sql
Β file:
CREATE TABLE "users" (
"id" SERIAL,
"name" VARCHAR(100) NOT NULL,
"country" VARCHAR(15) NOT NULL,
PRIMARY KEY ("id")
);
insert_data.sql
Β file:
INSERT INTO "users"
("name", "country")
VALUES
('Tom', 'Poland'),
('Chris', 'Spain'),
('Jack', 'Spain'),
('Kim', 'Vietnam'),
('Marco', 'Italy'),
('Kate', 'Spain'),
('Nam', 'Vietnam');
Native SQL query (used in the above example):
Ascending order
SELECT * FROM (
SELECT * FROM `users`
ORDER BY `id` DESC
LIMIT 3
) subquery
ORDER BY `id` ASC;
Descending order
SELECT *
FROM `users`
ORDER BY `id` DESC
LIMIT 3;