powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сдвинуть все строки столбца на одну позицию вверх
7 сообщений из 7, страница 1 из 1
Сдвинуть все строки столбца на одну позицию вверх
    #39481892
mavpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

У меня есть таблица sql из двух столбцов вида :

автор1 - z
2 - a
3 - b
4 - c
5 - d
6 - e
7 - f

...
(и так более 50 тысяч элементов)

я хочу привести ее к виду:


автор1 - a
2 - b
3 - c
4 - d
5 - e
6 - f
7 - g

...

т.е. во втором столбце все значения поднять на одну позицию выше (не трогая первый столбец)

Каким запросом я могу это сделать, в том же пхпмайадмин?
...
Рейтинг: 0 / 0
Сдвинуть все строки столбца на одну позицию вверх
    #39481916
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что будет во втором поле "последней" записи?
...
Рейтинг: 0 / 0
Сдвинуть все строки столбца на одну позицию вверх
    #39481929
mavpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
там пустышка будет, потом вручную вобью правильное значение
...
Рейтинг: 0 / 0
Сдвинуть все строки столбца на одну позицию вверх
    #39481982
Darkripple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в первом столбце числа могут быть с разрывами, не целыми или повторяться?
...
Рейтинг: 0 / 0
Сдвинуть все строки столбца на одну позицию вверх
    #39481991
mavpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Darkrippleв первом столбце числа могут быть с разрывами, не целыми или повторяться?

там числа не по порядку на самом деле, по сути char там. Не повторяются
...
Рейтинг: 0 / 0
Сдвинуть все строки столбца на одну позицию вверх
    #39481995
Darkripple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это пример для целочисленного первого столбца.
для символьного - вам нужно будет определиться с сортировкой.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
drop table if exists test003;
create table test003 (id int, v char(1));
insert into test003 (id, v)
VALUES
(1,'z'),
(2,'a'),
(3,'b'),
(4,'c'),
(5,'d');

drop procedure if exists tmp_002;
create procedure tmp_002()
begin
declare done int default 1;
declare previd, currid int default 0;
declare prevV, currV char(1);
declare cur cursor for select id, v from test003 order by id desc;
declare continue handler for not found set done=0;
open cur;
fetch cur into currid, currV;
while done do
  if previd > 0 then 
    update test003 set v = prevV where id = currId; 
   else
    update test003 set v = '' where id = currId; 
  end if;
  set previd = currid;
  set prevV = currV;
  fetch cur into currid, currV;
end while;
close cur;
end;

call tmp_002();
select a.* from test003 a;
...
Рейтинг: 0 / 0
Сдвинуть все строки столбца на одну позицию вверх
    #39482187
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mavpaпо сути char там. Не повторяются
Почитайте ФАК - там есть тема о нумерации записей. Реализуйте. А потом тривиальное
Код: sql
1.
2.
3.
UPDATE table AS t1, table AS t2
SET t1.value = t2.value
WHERE t1.row_number = t2.row_number -1


mavpaтам пустышка будет, потом вручную вобью правильное значение
По описанной методике - значение у этой записи не изменится... но можете заменить внутреннее связывание на левое, тогда там будет NULL.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сдвинуть все строки столбца на одну позицию вверх
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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