从 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)
上的索引。
请注意,如果员工在同一日期有多笔贷款,这将检索最后一笔。
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)
上的索引。
请注意,如果员工在同一日期有多笔贷款,这将检索最后一笔。