-1

私はユーザー アクティビティに取り組んでいるので、その場合、最後の 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

4 に答える 4

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

于 2013-03-18T10:22:51.223 に答える
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

ただし、ユーザーが最近アクティブでない場合、空の結果セットが返される可能性があります。

于 2013-03-18T10:23:26.647 に答える
4

降順で数えて最後の 30 行を選択するだけです。このクエリを確認してください:-

"Select * from activities WHERE got_id='$user->id' ORDER BY `id` DESC limit  30"
于 2013-03-18T10:23:56.377 に答える
3

これを試して、

$CheckQuery = mysql_query("SELECT * FROM activities WHERE got_id='$user->id' ORDER BY `id` DESC LIMIT 30");
于 2013-03-18T10:22:38.253 に答える