x не может быть прокси-сервером самого себя
blockquote>Конечно, это возможно. Вы можете изменить переменную так, чтобы она указывала на прокси, просто выполнив
x = new Proxy(x, handler)
Пример примитива:
[ 117]const handler = { set: function(obj, prop, value) { console.log('setting prop: ', prop, ' to ', value) obj[prop] = value; return true; } }; let x = { 'a': 1, 'b': 2 }; x = new Proxy(x, handler); x.a = 3; // the method is automatically called
Следующий:
SELECT * FROM `bb_topics`
WHERE `topic_id` =
(select min(`topic_id`) FROM `bb_topics` where `topic_id` > 123
and `topic_poster` = 5)
Предыдущий:
SELECT * FROM `bb_topics`
WHERE `topic_id` =
(select max(`topic_id`) FROM `bb_topics` where `topic_id` < 123
and `topic_poster` = 5)
Оба:
SELECT * FROM `bb_topics`
WHERE `topic_id` =
(select min(`topic_id`) FROM `bb_topics` where `topic_id` > 123
and `topic_poster` = 5)
or `topic_id` =
(select max(`topic_id`) FROM `bb_topics` where `topic_id` < 123
and `topic_poster` = 5)
Посмотрите на этот более старый вопрос также.
Мое предположение - то, что ОБЪЕДИНЕНИЕ с ПРЕДЕЛОМ 1 работает лучше, чем агрегаты в моем ответе здесь.
Вот тонкий, но эффективный способ выполнить это, и он работает даже над старыми версиями MySQL, которые не поддерживают подзапросы-
SELECT * FROM bb_topics AS bb1 LEFT JOIN bb_topics AS bb2 ON bb1.topic_poster = bb2.topic_poster AND bb2.topic_id > bb1.topic_id LEFT JOIN bb_topics AS bb3 ON bb1.topic_poster = bb3.topic_poster AND bb3.topic_id > bb1.topic_id AND bb3.topic_id < bb2.topic_id WHERE bb1.topic_poster = 5 AND bb3.topic_id IS NULL
Это получает Вас следующее смежное сообщение. Я могу заполнить симметричные пункты для следующего предыдущего сообщения, если это не самоочевидно.
РЕДАКТИРОВАНИЕ - незначительный исправило alii.
Примечание: Прежде downvoting, прочитайте комментарий и первый пересмотр вопроса ;-)
По определению данные по таблице RDBMS не заказаны. Это означает, что при выполнении запроса если Вы не указываете пункт ORDER BY, порядок может отличаться от одного запроса до другого. Кроме того, необходимо полагать, что следующий запрос идет в (или, по крайней мере, может) возвращать другой порядок.
Предположим, что это может быть другим пользователем на базе данных, вставляет новую запись, и RDBMS рассматривает для помещения ее между строками, которые Вы рассматриваете. Или DBA перемещает таблицу к другому в основании онлайн (это возможно в Oracle, например), в этом случае данные могут быть изменены по любому вопросу.
Для Вашего вопроса необходимо создать своего рода кэш результата запроса для определения предшествующих и следующих строк на запросах.