Как отфильтровать выборку MySQL?

301
26 ноября 2016, 20:22

Запрос:

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)
Answer 1

Попробуйте использовать оператор exists:

SELECT id
FROM test t1
WHERE EXISTS
         (SELECT id
          FROM test t2
          where t2.id in (t1.id + 10, t1.id - 10))

Пример на sqlfiddle.

READ ALSO
Некорректный старт сервера

Некорректный старт сервера

При старте ubuntu 14 tomcat стартует автоматом но не видит бд и выводит 500 статус на реквесты, как можно это исправить? При рестарте из IDE все работает...

262
Логика приложения

Логика приложения

Имеются сущности: Преподаватели, студенты, курсы

261
Возвращение значения двух селектов в node js

Возвращение значения двух селектов в node js

Доброго времени сутокРаботаю с node js

311
MySql автоинкремент не учитывает удаленные id элементы

MySql автоинкремент не учитывает удаленные id элементы

У меня есть таблица a с varhar массивом на id в b таблицеК примеру (1,2,3,4,5,6)

313