从sql中的表中获取最后输入的id

8dtrkrch  于 2021-08-13  发布在  Java
关注(0)|答案(4)|浏览(477)

在这里输入图像描述我有一个雇员表。在那张表里我有n笔贷款。。现在我要选择所有员工,包括他最后一次贷款的价值和日期。。有人能帮我吗。
到目前为止我已经做了:

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

我试过分组,限制和顺序,但没有用。。。我还试着取最后一次出现的员工id,它也不起作用。。

xpcnnkqh

xpcnnkqh1#

更新:要获取最大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;

我不得不提到,没有主键的db表设计不是很好:https://i.stack.imgur.com/dtyo8.png

57hvy0tb

57hvy0tb2#

如果只需要包含最后一个贷款id的行,则需要关联的子查询

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

qni6mghb3#

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)
omhiaaxx

omhiaaxx4#

上次贷款价值和日期
你似乎想要:

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
                     );

这假设 loan_date 在数据库中具有正确的日期/时间类型(不管图像中的数据看起来如何)。
为了提高性能,您需要一个索引 (employee_id, load_date) .
请注意,如果一个员工在同一天有多笔贷款,这将检索最后一笔贷款。

相关问题