MySql根据另一个表中的最大值选择一个表中的所有行
我希望能够从下面的表1和表3中获得所有数据,但除此之外,我还希望从表2中获得最新的应用程序阶段。通过获取每个应用程序的最大阶段\日期来确定最新的应用程序阶段 表1:应用 表2:应用程序进度 编辑:第三个表格 表3:申请人 返回数据集 我正在努力解决这个问题,希望能得到任何帮助MySql根据另一个表中的最大值选择一个表中的所有行,mysql,sql,database,join,max,Mysql,Sql,Database,Join,Max,我希望能够从下面的表1和表3中获得所有数据,但除此之外,我还希望从表2中获得最新的应用程序阶段。通过获取每个应用程序的最大阶段\日期来确定最新的应用程序阶段 表1:应用 表2:应用程序进度 编辑:第三个表格 表3:申请人 返回数据集 我正在努力解决这个问题,希望能得到任何帮助 PS.试图给出sqlfiddle的一个例子,但它马上就失败了。如果在此之前没有答案,我将在备份时使用sqlfiddle更新它。您可以使用相关子查询来完成此操作: select a.*, (select app
PS.试图给出sqlfiddle的一个例子,但它马上就失败了。如果在此之前没有答案,我将在备份时使用sqlfiddle更新它。您可以使用相关子查询来完成此操作:
select a.*,
(select application_stage
from application_progress ap
where ap.application_id = a.id
order by stage_date desc
limit 1
) MostRecentStage
from applications a;
编辑:
您可以使用以下内容加入申请者数据:
select a.*, aa.*,
(select application_stage
from application_progress ap
where ap.application_id = a.id
order by stage_date desc
limit 1
) MostRecentStage
from applications a join
applicant aa
on a.applicant_id = aa.id;
你能在你的查询中展示你到目前为止尝试过的东西吗?直接发布在这里,不需要SQL FIDLE。谢谢戈登。我正试图扩展它,引入第三个表,以便获得申请者的当前状态,并对您的代码进行如下调整:选择申请者。*,从应用程序\进度中选择应用程序\阶段加入应用程序\进度中的应用程序。应用程序id=applications.id,其中应用程序\进度。应用程序\ id=applications.id按应用程序顺序\进度。状态\日期描述限制1作为当前\阶段,来自申请人;但这对我不起作用。我将如何调整您的代码来实现这一点?谢谢。@AdrianWalls。我在代码中没有看到第三个表。只是子查询中应用程序的不必要连接。我将第三个表添加到原始帖子中。我想从申请者表中获取所有申请者及其当前申请阶段?然后,在主查询中选择所有申请者时,我是否不需要在子查询中加入申请和申请进度?
id | applicant_name | applicant_address | programme_id
------------------------------------------------------
300 Applicant 1 abc 1
310 Applicant 2 xyz 2
320 Applicant 3 xyz 2
330 Applicant 4 xyz 2
340 Applicant 5 xyz 2
applicant_id | applicant_name | current_stage
---------------------------------------------------------
300 Applicant 1 PHASE1
310 Applicant 2 DRAFT
320 Applicant 3 DRAFT
330 Applicant 4 DRAFT
340 Applicant 5 APPLICATION
select a.*,
(select application_stage
from application_progress ap
where ap.application_id = a.id
order by stage_date desc
limit 1
) MostRecentStage
from applications a;
select a.*, aa.*,
(select application_stage
from application_progress ap
where ap.application_id = a.id
order by stage_date desc
limit 1
) MostRecentStage
from applications a join
applicant aa
on a.applicant_id = aa.id;