我已经尝试了一些事情,但我最终混淆了自己。MySQL - 集团最新和加入一审
我想要做的是从表格中找到最近的记录,并在特定日期后加入第一条记录。
一个例子可能是
id | acct_no | created_at | some_other_column
1 | A0001 | 2017-05-21 00:00:00 | x
2 | A0001 | 2017-05-22 00:00:00 | y
3 | A0001 | 2017-05-22 00:00:00 | z
所以非常想我是找到created_at DESC
分类每个acct_no
的最新记录,这样的结果是由独特的帐号从上面的记录分组,所以这将是3
,但显然会有多个不同日期的记录的不同帐号。
然后,我试图实现的是加入同一张表,并在特定日期后找到具有相同帐号的第一条记录。
例如,记录1
将被返回的查询接合上acct_no
A0001
后或等于2017-05-21 00:00:00
,因为它是后的第一个结果/等于该日期,所以这些是由created_at ASC AND created_at >= "2017-05-21 00:00:00"
(以及可能AND id != latest.id
排序。
似乎相当简单,但我不能得到它的工作。
我只有我最近丢弃多个不同的查询后企图。
在这里,我想解决第一部分是选择最近的每个帐号:
SELECT latest.* FROM my_table latest
JOIN (SELECT acct_no, MAX(created_at) FROM my_table GROUP
BY acct_no) latest2
ON latest.acct_no = latest2.acct_no
但仍然返回所有行而不是每个最新的。
我确实在子查询中使用了连接,但在完成之前花了很长时间才运行它,但我在acct_no
和created_at
上有索引,但我也遇到了其他问题,其中列中的不在群里。我知道这可以关闭,但我试图找到一种方法来执行不需要的查询。
参见:[?为什么要我为了什么,在我看来是一个非常简单的SQL查询提供MCVE(https://meta.stackoverflow.com/questions/333952/why我应该改变我的答案,请检查它 – Strawberry
但我得到多个结果为每个帐号而不是最近的? –