删除第一行并将该行的副本放在表的末尾

时间:2018-08-06 23:40:48

标签: mysql

大家好,我有一个mySQL数据库,其中有一个名为queue的表,行由歌手和歌曲列组成。我正在使用这张表来保持歌手的升序,那里有一个自动递增ID

我想找到的正确语法是使用新的自动增量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()的想法,而是转向我最初的想法,并且我非常亲密。但是我的问题是我不知道要删除的最低ID,因为它只有一次,所以我需要用MIN(id)值或以某种方式填充它。这是我的位置。

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

2 个答案:

答案 0 :(得分:0)

为什么不仅仅UPDATE行通过使用idSET子句来更改其WHERE

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

这样,您不必担心添加新行和删除旧行。

答案 1 :(得分:0)

我认为一切都很好,只是您需要为delete语句更新SQL_SAFE_UPDATES = 0,所以您可以尝试以下方式

print_r($customList->base_voters);