我写这篇文章时期望它会起作用,但是 LIMIT
和 OFFSET
不允许我通过给出错误进行任何计算:“错误代码:1327。未声明的变量:ceil
"
INSERT INTO as24t
SELECT * FROM as24 LIMIT ceil(count(*)*3/4);
INSERT INTO as24v
SELECT * FROM as24 LIMIT floor(count(*)/4) OFFSET ceil(count(*)*3/4);
考虑到某些表的记录数为奇数,我只想取 as24 表的前 3/4 插入到 as24t 中,剩下的 1/4 插入到 as24v 中。另外,我不想计算它并将数字硬编码到查询中,因为我有 40 多个表要划分,我觉得一定有一个聪明的方法。
最佳答案
请找到一些独特的东西来订购,以验证您是否获得了补充套装。
set @numrows_25=(select count(*) from as24) * 0.25;
PREPARE STMT FROM 'INSERT INTO as24v SELECT * FROM as24 order by ... LIMIT ?';
EXECUTE STMT USING @numrows_25;
PREPARE STMT FROM 'INSERT INTO as24t SELECT * FROM as24 order by ... LIMIT 9999999999 OFFSET ?';
EXECUTE STMT USING @numrows_25;
关于mysql - 如何在 MySQL 中用另一个表的前 75% 和剩余 25% 创建两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200252/