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 因为它只会是 1 一次所以我需要以某种方式用 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,因此您可以尝试以下方式
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;
推荐阅读
- kotlin - KorGE (Kotlin) - 未解决的参考:TextFormat 和 TextSkin
- javascript - 如何使用javascript将嵌套的对象数组转换为一个对象数组?
- node.js - Puppeteer 通过 XPath 单击按钮不起作用
- css - 对所有内容使用 rem 单位并使用 vw 单位设置 HTML 元素的字体大小。有什么缺点?
- html - 如何在屏幕宽时设置响应图像的默认高度,并在屏幕宽度窄时按比例缩放?
- java - 监视器中的并发性,同时有两个函数调用来自同一个其他对象
- sass - 顺风 scss 地图
- python - 熊猫通过减去每日平均值从数据中删除每日季节性
- class - 一起定义 fmt::Display 和 fmt::Debug
- java - 检查二维数组中的特定索引以宣布获胜者