表名:blogs 字段:id,path,title,sort,tags,img,content,hot,pageviews,created,updated
步骤如下
- 复制
blogs
结构 到blogs_copy
中 并清空blogs_copy
的数据 - 从
blogs
表插入数据到blog_copy
表中并按created
排序 - 重置
blogs_copy
的 自动递增值 (AUTO_INCREMENT) 是blogs_copy
表的长度 - 检查
blogs_copy
数据 - 删除
blogs
- 保存
blogs_copy
为blogs
表
完整代码
sql
-- 开始事务
START TRANSACTION;
-- 复制表结构并清空数据
CREATE TABLE blogs_copy LIKE blogs;
TRUNCATE TABLE blogs_copy;
-- 插入数据并按时间排序
INSERT INTO blogs_copy (path, title, sort, tags, img, content, hot, pageviews, created, updated)
SELECT path, title, sort, tags, img, content, hot, pageviews, created, updated
FROM blogs
ORDER BY created;
-- 获取`blogs_copy`表的长度
SET @count = (SELECT COUNT(*) FROM blogs_copy);
-- 构建动态SQL语句
SET @sql = CONCAT('ALTER TABLE blogs_copy AUTO_INCREMENT = ', @count + 1);
-- 执行动态SQL语句
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 检查复制后的数据
SELECT * FROM blogs_copy;
-- 删除原表并重命名复制表为原表名
DROP TABLE blogs;
RENAME TABLE blogs_copy TO blogs;
-- 提交事务
COMMIT;
查看表结构
sql
DESCRIBE blogs;
或者
sql
SHOW COLUMNS FROM blogs;