Home > Blockchain >  Retrieve last row with specific condition
Retrieve last row with specific condition

Time:06-14

Suppose we have a table like:

ID Account Amount Date
1 4455 52 01-01-2022
2 4455 32 02-01-2022
3 4455 23 03-01-2022
4 4455 23 04-01-2022
5 6565 236 01-01-2022
6 6565 623 02-01-2022
7 6565 132 03-01-2022
8 2656 564 01-01-2022
9 2656 132 02-01-2022

We need to retrieve every last row of given account_no. We need output like:

ID Account Amount Date
4 4455 23 04-01-2022
7 6565 132 03-01-2022
10 2656 13 03-01-2022

Kindly suggest me a query to retrieve data like this in table of 2000 records.

CodePudding user response:

You want the last row of certain query. So you must be having an order by clause. Just reverse the ordering and use a limit clause with limit set to one row.

SELECT column_name(s)
FROM table_name
WHERE condition
order by your_reversed_orderby_clause
LIMIT 1;

CodePudding user response:

If you are using MySQL 8, then you can use ROW_NUMBER() function for this:

WITH CTE AS 
(
  SELECT ID,Account,Amount,Date
   ,ROW_NUMBER() OVER(PARTITION BY Account ORDER BY ID DESC) AS RN 
  FROM Table1
)
SELECT * FROM CTE 
WHERE RN=1 
ORDER BY ID;
ID Account Amount Date RN
4 4455 23 2022-04-01 00:00:00 1
7 6565 132 2022-03-01 00:00:00 1
9 2656 132 2022-02-01 00:00:00 1

See this db<>fiddle

CodePudding user response:

SELECT * FROM table_name
WHERE ID IN (
  SELECT max(ID) FROM table_name
  GROUP BY Acount
  ORDER BY Account
)
  • Related