嗨,伙计们,我有一个mysql数据库,有一个名为queue的表,行由列singer和song组成。我用这张表来维持歌手的顺序,有一个自动递增的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,因为它只有一次是1,所以我需要用min(id)值或变量来填充它。这就是我现在的处境。
INSERT INTO queue (SELECT NULL,singer, song1 FROM queue WHERE id = 1);
DELETE FROM queue ORDER BY id ASC LIMIT 1;
2条答案
按热度按时间jdgnovmf1#
为什么不干脆
UPDATE
要更改其属性的行id
通过使用SET
以及WHERE
条款?这样您就不必担心添加新行和删除旧行。
yvt65v4c2#
我认为一切都很好,只是您需要为delete语句更新sql\u safe\u updates=0,所以您可以尝试下面的方法