php-mysql извлекает следующий и предыдущий идентификатор из базы данных

У меня есть следующая таблица:

**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)

Я пытаюсь использовать phpmysql для получения активности, сделанной пользователем1, и получить идентификатор. В этом случае активность имеет идентификатор (1, 2, 5 и 8).

 $currentId = 5; 

Я хочу получить следующие и предыдущие идентификаторы, если они существуют (в этом случае 2 и 8).

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

Я не уверен, как написать запрос для этого.

Solutions Collecting From Web of "php-mysql извлекает следующий и предыдущий идентификатор из базы данных"

Вы можете сделать что-то вроде этого:

Для следующего 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; 

Я думаю, вы можете использовать запрос 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 .