如何在MySQL中创建两个表,其中前75%和另一个表的剩余25%?

时间:2016-10-23 06:36:55

标签: mysql sql

我写了这篇文章,希望它可行,但LIMITOFFSET不允许我通过提供错误进行任何计算:"错误代码: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多个表格要分开,我觉得必须有一个聪明的方法。

1 个答案:

答案 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;