我正在处理用户活动,所以在这种情况下,我需要检查最近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行中用户的最后一次活动(不是活动)。
答案 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");