Удалить первую строку и поместить копию строки в конец таблицы

0

Привет, ребята, у меня есть база данных mySQL со столом, называемой queue, строки состоят из певцов и песен. Я использую таблицу, чтобы сохранить порядок, в котором певцы поднялись, есть автоматическое увеличение Id

То, что я пытаюсь найти, - это правильный синтаксис для копирования первой строки из моей таблицы в последнюю строку с новым значением идентификатора автоматического увеличения, а затем удалить первую строку. Это не казалось такой проблемой, пока я не попытался написать ее. Любые идеи приветствуются.

Поскольку я получаю ответ, я пробовал это... но продолжаю получать ошибку 1111

 UPDATE 'queue'
 SET 'id' = MAX(id) + 1;
 WHERE 'id' = MIN(id);

И попробовали это... как это может быть так сложно.

 Set $max = (SELECT MAX(id) + 1 FROM queue);
 Set $min = (SELECT MIN(id) FROM queue);
 UPDATE 'queue'
 SET 'id' =  $max
 WHERE 'id' = $min;

Поэтому я отказался от идеи max() min(), если у кого-то нет полезного ответа и не перешел к моей первоначальной мысли, и я очень близко. но моя проблема заключается в том, что я не буду знать, что самый низкий идентификатор удаляется, потому что он будет только один раз, поэтому мне нужно каким-то образом заполнить его значением MIN (id) или переменной. Вот где я нахожусь.

  INSERT INTO queue (SELECT NULL,singer, song1 FROM queue WHERE id = 1);
  DELETE FROM queue ORDER BY id ASC LIMIT 1; 
  • 0
    Mysql не php, $ не помечает переменную. @ делает.
Теги:

2 ответа

0

я думаю, что все в порядке, просто вам нужно обновить SQL_SAFE_UPDATES = 0 для инструкции delete, чтобы вы могли попробовать ниже.

  SET SQL_SAFE_UPDATES = 0;  
  INSERT INTO queue (SELECT NULL,singer, song1 FROM queue WHERE id = 1);
  DELETE FROM queue ORDER BY id ASC LIMIT 1;
0

Почему бы не просто UPDATE строку для изменения своего id с помощью предложения SET и WHERE?

UPDATE 'queue'
SET 'id' = 21 -- (current_highest_value + 1)
WHERE 'id' = 1

Таким образом, вам не нужно беспокоиться о добавлении новой строки и удалении старой.

  • 0
    Очень интересная мысль, собираюсь разобраться в этом сейчас .. нужно исследовать получение наибольшего значения идентификатора ... спасибо за подсказку попробую. Также не уверен, как работать во второй раз, где самый низкий идентификатор будет 2 ... для исследования
  • 0
    Хорошо, очень крутые функции MIN () и MAX (), чтобы увидеть, смогу ли я заставить его работать.
Показать ещё 1 комментарий

Ещё вопросы

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