对不起标题,我不知道如何更好地解释它......
我有一个论坛,我想在php中制作一种成就系统
我想知道有帖子> 10的用户何时发布了他们的第10条消息...
邮政表就像
post_id | post_date | userid | post_message | ...
我可以通过
为每个用户获得此结果select userid, post_date from posts where userid=1 order by post_date limit 9,1
但我需要一个像
这样的结果集id | date
id | date
id | date
只能用程序来完成?
答案 0 :(得分:1)
尝试此查询
select
*
from (
select
@rn:=if(@prv=userid, @rn+1, 1) as rid,
@prv:=userid as userid,
post_message
from
tbl
join
(select @rn:=0, @prv:=0) tmp
order by
userid,
post_date) tmp
where
rid=10
| RID | USERID | POST_MESSAGE |
-------------------------------
| 10 | 1 | asdasd |
| 10 | 2 | asdasd |
答案 1 :(得分:1)
试试这个:
SELECT userid
, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(post_date ORDER BY post_date), ',', 10), ',', -1) AS PostDate
FROM posts
GROUP BY userid
HAVING PostDate <> '' OR PostDate IS NOT NULL
但是你需要注意GROUP_CONCAT可以容纳的最大长度。