Как переместить данные столбца в следующую строку до конца, начиная с указанного ключа

0

У меня есть таблица с именем network_table с этим примером данных:

NetworkTableID, MainID, UserID
1, 1, 1
2, 1, 2
3, 1, 3
4, 1, 4
5, 2, 5

Поэтому я хочу переместить все данные столбцов UserID в следующую строку, начиная с NetworkTableID: 2 до конца таблицы, и будет добавлена другая вставленная строка, потому что строки перемещены. Я ожидаю такого результата:

NetworkTableID, MainID, UserID
1, 1, 1
2, 1, 2
3, 1, 2
4, 1, 3
5, 2, 4
6, 2, 5

Этот запрос не работает для меня. Это дает мне "# 1093". Вы не можете указать целевую таблицу "network_table" для обновления в предложении FROM ".

UPDATE network_table
SET UserID = (SELECT UserID FROM network_table as nt2
              WHERE nt2.NetworkTableID=network_table.NetworkTableID-1)
WHERE network_table.NetworkTableID > 2

Примечание. Столбец UserID - это ключ UNIQUE.

  • 0
    Не ответ, но если желаемая операция идет от 5 до 6 записей, то вам понадобится вставить туда, возможно, поверх обновления.
  • 0
    Вы двигаетесь или просто добавляете 1 к существующим значениям?
Показать ещё 1 комментарий
Теги:

1 ответ

0

Чтобы сохранить последнее поле, если необходимо, сохраните копию:

INSERT INTO network_table (MainID,UserID)
SELECT MainID,UserID FROM network_table ORDER BY NetworkTableID DESC LIMIT 1;

а затем обновить таблицу:

UPDATE network_table
left join network_table as nt2 on nt2.NetworkTableID=network_table.NetworkTableID-1
SET network_table.UserID =  nt2.UserID
WHERE network_table.NetworkTableID > 2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню