如何使用mysql_query检查数据库中最后30行的最后1个活动

时间:2013-03-18 10:21:17

标签: php mysql

我正在处理用户活动,所以在这种情况下,我需要检查最近30行中用户的上一个活动。

我尝试使用此功能,但这会查看所有表格行,但因为我需要检查最后30位,我需要帮助,谢谢。

$CheckQuery = mysql_query("SELECT * FROM activities WHERE got_id='$user->id' ORDER BY `id` DESC LIMIT 0 , 1");

while($row = mysql_fetch_assoc($CheckQuery))
{
    // some function
}

这就是我想知道的:)

select *
from (select *
      from activities
      order by `id` desc
      limit 30) t
where got_id = '$user->id'
limit 1

我说的:我需要检查最后30行中用户的最后一次活动(不是活动)。

4 个答案:

答案 0 :(得分:4)

SELECT * FROM activities WHERE got_id='$user->id' ORDER BY `id` DESC LIMIT  30"

请参阅此处以限制您的查询:http://dev.mysql.com/doc/refman/5.6/en/limit-optimization.html

答案 1 :(得分:4)

这是正确的方法,您只能使用limit 30代替

SELECT * FROM activities WHERE got_id='$user->id' ORDER BY `id` DESC LIMIT 30

<强>更新

如果您想要最后30个活动中的用户的最后一个活动,则必须先选择最后30个活动,然后从该活动中选择用户的上一个活动

select *
from (select *
      from activities
      order by `id` desc
      limit 30) t
where got_id = '$user->id'
limit 1

但是如果用户最近没有活动,这可能会给出一个空的结果集。

答案 2 :(得分:4)

只需按降序排列,即可选择最后30行。 看看这个查询: -

"Select * from activities WHERE got_id='$user->id' ORDER BY `id` DESC limit  30"

答案 3 :(得分:3)

试试这个,

$CheckQuery = mysql_query("SELECT * FROM activities WHERE got_id='$user->id' ORDER BY `id` DESC LIMIT 30");