从 table in sql 获取最后输入的 ID

Get the last entered id from a table in sql

enter image description here我有一名员工table。在那table我有n笔贷款..现在我想select所有员工及其最后一次贷款的价值和日期..任何人都可以帮我解决这个问题。

这是我目前所做的:

SELECT employee_id,employee_name,department_name, 
       designation_name,PF_type,PF_number,Opening_balance,
       MAX(Loan_id),MAX(loan_date), MAX(loan_amount)  
FROM single_roww1
GROUP BY employee_id

我为此尝试了 group by、limit 和 order by,但没有用...我还尝试使用最后一次出现的 employee_id 也没有用...

更新:获取最大 id 的整行:

SELECT *
FROM loan
INNER JOIN
  (SELECT max(id) max_id
   FROM loan
   GROUP BY employee_id) x ON x.max_id = loan.id
group by employee_id;

我不得不提一下,您的数据库 table 没有主键的设计设计不佳:https://i.stack.imgur.com/DTYO8.png

如果只需要包含最后一个 loan_id 的行,那么相关子查询就是您想要的

SELECT *
FROM single_roww1 SR
WHERE LOAN_ID = (SELECT MAX(LOAN_ID) FROM single_roww1 WHERE EMPLOYEE_ID = SR.EMPLOYEE_ID);

WHERE 子句中使用相关子查询:

SELECT s.employee_id, s.employee_name, s.department_name, 
       s.designation_name, s.PF_type, s.PF_number, s.Opening_balance,
       s.Loan_id, s.loan_date, s.loan_amount  
FROM single_roww1 s
WHERE s.Loan_id = (SELECT MAX(Loan_id) FROM single_roww1 WHERE employee_id = s.employee_id)

last taken loan value and date

你似乎想要:

SELECT sr.*
FROM single_roww1 sr
WHERE sr.loan_date = (SELECT MAX(sr2.load_date)
                      FROM single_roww1 sr2
                      WHERE sr2.employee_id = sr.employee_id
                     );

这假设 shat loan_date 在数据库中具有正确的 date/time 类型(尽管图像中的数据看起来像)。

为了性能,您需要 (employee_id, load_date) 上的索引。

请注意,如果员工在同一日期有多笔贷款,这将检索最后一笔。