Привет, ребята, у меня есть база данных 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;
я думаю, что все в порядке, просто вам нужно обновить 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;
Почему бы не просто UPDATE
строку для изменения своего id
с помощью предложения SET
и WHERE
?
UPDATE 'queue'
SET 'id' = 21 -- (current_highest_value + 1)
WHERE 'id' = 1
Таким образом, вам не нужно беспокоиться о добавлении новой строки и удалении старой.