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;

如果它们存在(在本例中为 2 和 8),我想获取下一个和上一个 id。

$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如果它存在,第二个应该返回 ID = 8

于 2012-12-24T02:30:55.143 回答