我写了这篇文章,希望它可行,但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多个表格要分开,我觉得必须有一个聪明的方法。
答案 0 :(得分:1)
请查找订购的独特内容,以验证您是否获得了补充集。
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;