2

私は次の表を持っています:

**id**         **username**         **activity**
1              user1                  activity-like
2              user1                  activity-share
3              user3                  activity-like
4              user4                  activity-like
5              user1                  activity-share
6              user6                  activity-like
8              user1                  activity-share
9              user3                  activity-like
10             user5                  activity-share

(注:id = 7はありません)

php-mysqlを使用して、user1によって行われたアクティビティをフェッチし、IDを取得しようとしています。この場合、アクティビティのIDは(1、2、5、および8)です。

$currentId = 5;

次のIDと前のIDが存在する場合は、それらを取得したいと思います(この場合は2と8)。

$fetch = mysql_query("SELECT * FROM `main` WHERE `username` = 'user1' AND id > '$id'");
if(mysql_num_rows($fetch) == 1){
while (){

}
$result = $fetch['id'];
}

そのためのクエリの書き方がわかりません。

4

2 に答える 2

5

あなたはこのようなことをすることができます:

次のIDについては、

SELECT id from tablename where username = 'user1' AND id > $currentId ORDER BY ID ASC LIMIT 1;

以前のIDの場合、

SELECT id from tablename where username = 'user1' AND id < $currentId ORDER BY ID DESC LIMIT 1;
于 2012-12-24T02:33:38.373 に答える
1

union以下のようなクエリを使用できると思います。

 (SELECT ID, USERNAME, ACTIVITY FROM MAIN WHERE username = 'user1' AND ID < '$id'
 ORDER BY ID DESC LIMIT 1)
 UNION 
 (SELECT ID, USERNAME, ACTIVITY FROM MAIN WHERE username = 'user1' AND ID > '$id'
 ORDER BY ID ASC LIMIT 1);

最初のクエリフラグメントはID=2が存在する場合はそれを返し、2番目のクエリフラグメントはID=を返す必要があります8

于 2012-12-24T02:30:55.143 に答える