我有以下表格。
letter table
letter_no date r_from branch
1 2018-08-10 A Admin
2 2018-08-10 B Enginnering
3 2018-08-11 C IT
4 2018-08-12 D Admin
action table
action_id letter action_date status
1 1 2018-08-15 on-going
2 2 2018-08-12 on-going
3 1 2018-08-17 finished
desired output
letter_id action_date status
1 2018-08-17 finished
2 2018-08-12 on-going
我使用下面的sql查询来获取输出
SELECT letter.letter_id, MAX(action.action_date), action.status FROM action
LEFT JOIN action ON action.letter_id=letter.letter_id
GROUP BY action.letter_id
但是查询将生成以下输出。
letter_id action_date status
1 2018-08-15 on-going
2 2018-08-12 on-going
我不明白我做错了什么。有人能帮忙吗?
2条答案
按热度按时间p1iqtdky1#
可以在相关子查询中使用聚合函数,如下所示:
http://sqlfiddle.com/#!9/02c4c/5号
knpiaxh12#
对于您的查询,有两个名为
action
而且没有别名,你也只是比较一下letter_id
在JOIN
,您还需要进行比较action_date
您可以使用下面的sql来实现它