Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сдвинуть все строки столбца на одну позицию вверх / 7 сообщений из 7, страница 1 из 1
03.07.2017, 16:01
    #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
03.07.2017, 16:21
    #39481916
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвинуть все строки столбца на одну позицию вверх
А что будет во втором поле "последней" записи?
...
Рейтинг: 0 / 0
03.07.2017, 16:40
    #39481929
mavpa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвинуть все строки столбца на одну позицию вверх
там пустышка будет, потом вручную вобью правильное значение
...
Рейтинг: 0 / 0
03.07.2017, 17:42
    #39481982
Darkripple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвинуть все строки столбца на одну позицию вверх
в первом столбце числа могут быть с разрывами, не целыми или повторяться?
...
Рейтинг: 0 / 0
03.07.2017, 17:57
    #39481991
mavpa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвинуть все строки столбца на одну позицию вверх
Darkrippleв первом столбце числа могут быть с разрывами, не целыми или повторяться?

там числа не по порядку на самом деле, по сути char там. Не повторяются
...
Рейтинг: 0 / 0
03.07.2017, 18:00
    #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
04.07.2017, 07:57
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сдвинуть все строки столбца на одну позицию вверх / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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