@koliane

Как составить следующий запрос SQL?

Исходная выборка отсортирована по возрастанию по ID_1 и ID_2.
ID_2 всегда больше ID_1.
92a76af420.jpg
Необходимо получить такую выборку, где ID_2 одной записи будет меньше чем ID_1 следующей записи.
Т.е., для приведенной выборки результат будет следующим: 7bd4686f54.jpg

Как составить такой запрос и возможно ли это (на PostgreSql или MySql)?
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для примитивного случая - всегда выбираем первую попавшуюся запись:
SET @last = 0;
SELECT `ID_1`, @last := `ID_2` AS `ID_2`
  FROM (
    SELECT `ID_1`, `ID_2` 
      FROM `table`
      ORDER BY `ID_1`, `ID_2`
  ) AS `t`
  WHERE `ID_1` > @last;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Смотрите в оконные функции. lag и lead, в postgresql давно, в mysql в 8.0 наконец появились. Для более старых mysql - извращаться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы