Запрос:
SELECT * FROM table WHERE s=1 ORDER BY id
Получил ряд id: 2,5,6,7,9,11,12,15,16,17,18,20
Каким оператором MySQL можно вытащить из вышеуказанного ряда:
2,5,6,7,12,15,16,17?
Условие отбора - оставить числа, которые составляют пару - само число и оно же плюс 10.
То есть берем 2, прибавляем 10 (получается 12), в этом ряду есть число 12 - бинго! - обоих оставляем, далее берем 5 и ищем 5+10=15 - тоже есть оба двое - оставляем обоих и так далее, и вот мы подошли к 9 - прибавляем 10, получаем 19, такого числа нет, девятку удаляем.
Вот так не получилось:
SELECT *
FROM (SELECT *
FROM table
WHERE s=1 ORDER BY id) aa
WHERE ((aa.id MOD 10)=0)
Попробуйте использовать оператор exists:
SELECT id
FROM test t1
WHERE EXISTS
(SELECT id
FROM test t2
where t2.id in (t1.id + 10, t1.id - 10))
Пример на sqlfiddle.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники