MySQL Query仅显示按用户分组的最后一项

时间:2015-03-31 15:55:44

标签: php mysql

我有一个注册用户操作及其地理位置的数据库。 现在我想在每个用户的最后一个动作的手中获取这些数据。

该表看起来有点像:

  • geoaction_id自动递增
  • geoaction_user
  • geoaction_creationdate(Y-m-d H:i:s)
  • geoaction_action
  • geoaction_lon
  • geoaction_lat

现在我想做一个简单的查询,选择最后一项的所有用户。

但LIMIT 0,1无论如何只会解析一行。 (逻辑!!)

分组给出了更好的结果。

但是如何只获得每个用户的最后一项?

2 个答案:

答案 0 :(得分:0)

试试这个,请提供您目前检查过的查询,以便更好地为您提供帮助。

    SELECT geoaction_user, geoaction_action 
    FROM table-name
    GROUP BY geoaction_user 
    ORDER BY geoaction_action DESC LIMIT 1

答案 1 :(得分:0)

使用集合:

SELECT
    g.geoaction_user,
    g.geoaction_action,
    g.geoaction_creationdate,
    g.geoaction_lat,
    g.geoaction_lon
FROM
    (
     SELECT
         geoaction_user,
         MAX(geoaction_id) max_id
     FROM
         geoactions
     GROUP BY geoaction_user
     ) s
JOIN
    geoactions g
    ON s.geoaction_user = g.geoaction_user
         AND s.max_id = geoaction_id

子查询使用tabble中最新条目的geoaction_id为每个user_id生成一个虚拟表,然后连接该表以获取属于最新id的数据。

如果需要过滤掉一些记录,请在子查询中放置where子句