这不能解决我的问题SQL Join to the latest record
我想以这样一种方式连接表,它只从使用MySQL的表中获取最新的记录,并计算具有特定值的read_reciep列
以下是我的数据。
表一:
| ID|姓名|
| --------------|--------------|
| 1|约翰|
| 二|汤姆|
| 三|安娜|
表二:
| ID|访视ID|日期|读接收|
| --------------|--------------|--------------|--------------|
| 1|二五一三|二零零一年五月五日|1|
| 1|八四六五四|2012年10月5日|1|
| 1|四五四|2018年4月20日|1|
| 二|七五四|一九九九年五月四日|0|
| 二|六五四|2010年8月8日|1|
| 二|六二四|1982年9月4日|1|
| 三|七五四六|一九九七年三月七日|0|
| 三|二四六五七四|2015年6月4日|1|
| 三|15487|2017年3月4日|1|
加入后需要的结果:
| ID|姓名|访视ID|日期|读接收|
| --------------|--------------|--------------|--------------|--------------|
| 1|约翰|四五四|2018年4月20日|三|
| 二|汤姆|六五四|2010年8月8日|二|
| 三|安娜|二四六五七四|2015年6月4日|二|
3条答案
按热度按时间ldfqzlk81#
假设您的版本是8.0,您有两个选择:
1.开窗功能:
如果你使用的是旧版本,首先要表示哀悼。5.7和更旧的版本甚至不能算是一个现代数据库,而且已经很长时间没有了。但是this is still possible。
2wnc66cl2#
如果你使用的是旧版本的mysql,那么试试这个:
步骤:
首先,我们需要获取最新的日期:
然后我们得到相关的
Visit_ID
和sum(read_reciep):最后我们使用
INNER JOIN
连接我们的数据以得到预期的结果Demo here
nimxete23#
对
row_number
使用子查询,只从该table_two
中获取最后一行。这里
row_number
将根据date
列的顺序对具有相同ID
的行进行编号。稍后在join期间,我们只取值等于1的行,在本例中这意味着-最旧的。