powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как написать альтернативу функциям LEAD и LAG?
12 сообщений из 12, страница 1 из 1
Как написать альтернативу функциям LEAD и LAG?
    #39347160
yuraavakyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такая задача: опустить елементы столбца таблицы на одну позицию.тоесть если было:
1
2
3
4
надо чтобы стало:
null
1
2
3
не используя LEAD LAG и все ето через один запрос
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347175
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347179
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuraavakyan,

Приведите пример исходных данных и желаемый результат на этих данных (в т.ч. форму этого результата - например, другая таблица или выборка записей).
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347318
yuraavakyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Ну я пишу один запрос к табличной переменной с одним столбцом numbers а мне возвращается переменная с тем же столбцом но елементы на 1 штуку опустились вниз,тоесть на месте первого елемента нулл а последний елемент теряется,я же написал пример в вопросе
numbers
1
2
3
4

result:
numbers
null
1
2
3
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347356
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
UPDATE `table`
SET numbers = CASE numbers
              WHEN 1 Then Null
              ELSE numbers - 1
              END
;
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347668
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuraavakyanзапрос к табличной переменнойу вас точно MySQL ?
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347671
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Код: sql
1.
2.
3.
4.
5.
6.
UPDATE `table`
SET numbers = CASE numbers
              WHEN 1 Then Null
              ELSE numbers - 1
              END
;

Можно чуток короче:
Код: sql
1.
2.
UPDATE `table`
SET numbers = NULLIF(numbers - 1, 0)
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347873
yuraavakyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята спасибо конечно всем за предложенные решения,но нужно,чтобы запрос работал при любом вводе,в данном случае если числа не последователжны тоесть совсем разные 12,15,20,31 то резулжтат правильным не будет.
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347944
Cosmagnetto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавить еще одну таблицу как временную
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE tbl2 AS
(SELECT
  id + 1 AS id,
  DATA
FROM
  tbl1);

UPDATE
  tbl1
  LEFT JOIN tbl2
    ON tbl1.id = tbl2.id SET tbl1.`data` =
    (SELECT
      tbl2.`data`
    FROM
      tbl2
    WHERE tbl1.id = tbl2.id
    LIMIT 1);

DROP TABLE tbl2;
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347945
Cosmagnetto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверное лучше не создавать/дропать таблицу, а очищать Truncate и наполнять
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39347946
Cosmagnetto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
id предполагается как счетчик в tbl1
...
Рейтинг: 0 / 0
Как написать альтернативу функциям LEAD и LAG?
    #39348019
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuraavakyanтакая задача: опустить елементы столбца таблицы на одну позицию.тоесть если было:
1
2
3
4
надо чтобы стало:
null
1
2
3
не используя LEAD LAG и все ето через один запрос

как подсказал Акина, посмотрите FAQ,
для вашей задачи подойдет просто пронумеровать записи и сдвинуть на один
по нумерации.

Альтернативно -- если вы знаете mysql переменные -- можете
созхранить предыдушее занчение в переменную и выдавать ее на
следуюшей строчке. Учтите что ORDER BY надо сделать в
обратном порядке.

Для промеров почитайте тотже FAQ и вот этот линк:

http://explainextended.com/2009/03/10/analytic-functions-first_value-last_value-lead-lag/
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как написать альтернативу функциям LEAD и LAG?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]