有一个表client_application
用类似这样的数据调用;
Id user_id name creationDate
---------------------------------------
1 5 name1 date
2 4 name2 date
3 98 name3 date
还有一个名为的表application_status
,其中包含应用程序的状态提要(application_id
是外键);
Id aplication_id status other_columns creationDate
----------------------------------------------------------------------
1 1 APPLICATION_SUMITTED data date
2 2 APPLICATION_SUMITTED data date
3 1 APPLICATION_RECEVIED data date
4 1 BANK_APPROVED data date
5 3 APPLICATION_SUMITTED data date
6 2 APPLICATION_RECEVIED data date
我想通过他们的状态查询应用程序。例如获取最新提交的申请?或获得银行批准的申请。
如何实现这样的 SQL 查询?
我试过了;
SELECT *
FROM (SELECT * FROM application_status ORDER BY creationDate DESC) t1
LEFT JOIN client_application on client_application.id = t1.application_id
GROUP BY t1.application_id;
这很好,我可以获取具有最新状态的应用程序,但是当我尝试在其中添加 where 子句时;
SELECT *
FROM (SELECT * FROM application_status ORDER BY creationDate DESC) t1
LEFT JOIN client_application on client_application.id = t1.application_id
where t1.status = 'APPLICATION_SUBMITTED'
GROUP BY t1.application_id;
它返回所有application_status
具有APPLICATION_SUBMITTED
状态列。它返回application_id
1 项(检查上表),但如您所见,ID 号为 1 的应用程序的APPLICATION_RECEIVED
状态为最新状态项。所以我不希望结果集中有这个。
也许我的方法是完全错误的。我愿意接受任何解决方案。
谢谢。