mysql按日期为每个用户选择最新的行

ctown4life

我正在尝试为pid = 50和active = 1的每个唯一用户ID选择最新的行。

这是一个示例表

+-----+----------+-------+-----------------------+---------+
| id  | userid   | pid   | start_date            | active  |
+-----+----------+-------+-----------------------+---------+
| 1   | 4        | 50    | 2015-05-15 12:00:00   | 1       |
| 2   | 4        | 50    | 2015-05-16 12:00:00   | 1       |
| 3   | 4        | 50    | 2015-05-17 12:00:00   | 0       |
| 4   | 4        | 51    | 2015-06-29 12:00:00   | 1       |
| 5   | 4        | 51    | 2015-06-30 12:00:00   | 1       |
| 6   | 5        | 50    | 2015-07-05 12:00:00   | 1       |
| 7   | 5        | 50    | 2015-07-06 12:00:00   | 1       |
| 8   | 5        | 51    | 2015-07-08 12:00:00   | 1       |
+-----+----------+-------+-----------------------+---------+

所需结果

+-----+----------+-------+-----------------------+---------+
| id  | userid   | pid   | start_date            | active  |
+-----+----------+-------+-----------------------+---------+
| 2   | 4        | 50    | 2015-05-16 12:00:00   | 1       |
| 7   | 5        | 50    | 2015-07-06 12:00:00   | 1       |
+-----+----------+-------+-----------------------+---------+

我已经尝试了很多方法,这是我所获得的最接近的方法,但是不幸的是它并没有退出。

SELECT *
FROM mytable t1
WHERE
    (
        SELECT COUNT(*)
        FROM mytable t2
        WHERE
            t1.userid = t2.userid           
            AND t1.start_date < t2.start_date
    ) < 1
AND pid = 50
AND active = 1
ORDER BY start_date DESC
Amdixon

计划

  1. 通过pid获取用户ID的最后记录分组,其中pid为50并且处于活动状态
  2. 内部联接到mytable以获取与last相关的记录信息

询问

select 
my.*
from
(
select userid, pid, active, max(start_date) as lst
from mytable
where pid = 50
and   active = 1
group by userid, pid, active
) maxd
inner join mytable my
on  maxd.userid = my.userid
and maxd.pid    = my.pid
and maxd.active = my.active
and maxd.lst    = my.start_date
;

输出

+----+--------+-----+------------------------+--------+
| id | userid | pid |       start_date       | active |
+----+--------+-----+------------------------+--------+
|  2 |      4 |  50 | May, 16 2015 12:00:00  |      1 |
|  7 |      5 |  50 | July, 06 2015 12:00:00 |      1 |
+----+--------+-----+------------------------+--------+

sqlfiddle

笔记

如@Strawberry所建议,已更新为同时加入pid和active。这样可以避免记录处于非活动状态或非pid 50,但也呈现完全相同的日期的可能性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何按号码为每个组选择最新日期?

来自分类Dev

按日期和时间选择最新的行

来自分类Dev

在JPA中选择具有1个条件的每个用户的最新日期的行

来自分类Dev

R为每个人选择最新日期行

来自分类Dev

SQL-按每个记录的最新日期选择记录

来自分类Dev

在SQL中,如何通过比较时间属性为每个用户选择一行中的值,而仅选择最新行?

来自分类Dev

为codeigniter中的每个用户选择最新记录

来自分类Dev

MySql 从列表中选择每个 IP 的最新连接日期?

来自分类Dev

MySQL-为每个日期组选择最大日期

来自分类Dev

MySQL-为每个帖子选择2条最新评论

来自分类Dev

MySQL-为每个帖子选择2条最新评论

来自分类Dev

Nhibernate分组依据-为每个外键选择最新行

来自分类Dev

Nhibernate分组依据-为每个外键选择最新行

来自分类Dev

选择每个用户和日期仅一行

来自分类Dev

根据最新日期和每个用户获取最新的sql行

来自分类Dev

Mysql为每个月的日期选择计数

来自分类Dev

Mysql为每个组选择最近的2条记录[用户]

来自分类Dev

sql查询以选择每个用户的最新条目

来自分类Dev

按用户选择最新的锻炼集

来自分类Dev

MySQL:按日期和分组依据选择行顺序

来自分类Dev

SQL:为每个产品选择最新销售

来自分类Dev

为每个“组”选择最新的文档

来自分类Dev

如何在mysql中为每个用户获取最多的行

来自分类Dev

mysql为每个客户选择过去3天的行

来自分类Dev

MySQL为每个组选择最后一行

来自分类Dev

按日期选择行信息

来自分类Dev

yii-为每个按日期排序的类型字段选择前五个记录

来自分类Dev

在MySQL中为每个用户记录访问的日期时间和退出的日期时间

来自分类Dev

MySQL:为每个用户获取最新的分数,其中quiz_id =某物

Related 相关文章

  1. 1

    如何按号码为每个组选择最新日期?

  2. 2

    按日期和时间选择最新的行

  3. 3

    在JPA中选择具有1个条件的每个用户的最新日期的行

  4. 4

    R为每个人选择最新日期行

  5. 5

    SQL-按每个记录的最新日期选择记录

  6. 6

    在SQL中,如何通过比较时间属性为每个用户选择一行中的值,而仅选择最新行?

  7. 7

    为codeigniter中的每个用户选择最新记录

  8. 8

    MySql 从列表中选择每个 IP 的最新连接日期?

  9. 9

    MySQL-为每个日期组选择最大日期

  10. 10

    MySQL-为每个帖子选择2条最新评论

  11. 11

    MySQL-为每个帖子选择2条最新评论

  12. 12

    Nhibernate分组依据-为每个外键选择最新行

  13. 13

    Nhibernate分组依据-为每个外键选择最新行

  14. 14

    选择每个用户和日期仅一行

  15. 15

    根据最新日期和每个用户获取最新的sql行

  16. 16

    Mysql为每个月的日期选择计数

  17. 17

    Mysql为每个组选择最近的2条记录[用户]

  18. 18

    sql查询以选择每个用户的最新条目

  19. 19

    按用户选择最新的锻炼集

  20. 20

    MySQL:按日期和分组依据选择行顺序

  21. 21

    SQL:为每个产品选择最新销售

  22. 22

    为每个“组”选择最新的文档

  23. 23

    如何在mysql中为每个用户获取最多的行

  24. 24

    mysql为每个客户选择过去3天的行

  25. 25

    MySQL为每个组选择最后一行

  26. 26

    按日期选择行信息

  27. 27

    yii-为每个按日期排序的类型字段选择前五个记录

  28. 28

    在MySQL中为每个用户记录访问的日期时间和退出的日期时间

  29. 29

    MySQL:为每个用户获取最新的分数,其中quiz_id =某物

热门标签

归档