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

如何在MySQL中创建两个表,其中前75%为另一个表,其余25%为另一个表?,mysql,sql,Mysql,Sql,我写这篇文章是希望它能工作,但LIMIT and OFFSET不允许我通过给出error:error Code:1327来进行任何计算。未声明的变量:ceil 我想做的就是取as24表的前3/4,插入as24t,剩下的1/4到as24v,考虑到有些表有奇数条记录。另外,我不想计算它,也不想将数字硬编码到查询中,因为我有40多个表要划分,我觉得一定有一种聪明的方法。请找到order by特有的方法,以验证您是否得到了补码集 set @numrows_25=(select count(*) fro

我写这篇文章是希望它能工作,但LIMIT and OFFSET不允许我通过给出error:error Code:1327来进行任何计算。未声明的变量:ceil


我想做的就是取as24表的前3/4,插入as24t,剩下的1/4到as24v,考虑到有些表有奇数条记录。另外,我不想计算它,也不想将数字硬编码到查询中,因为我有40多个表要划分,我觉得一定有一种聪明的方法。

请找到order by特有的方法,以验证您是否得到了补码集

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;

你能试试CEIL吗,也许这里的区分大小写是个问题,所以你会遇到这个错误。我忘了提到行是按时间戳列排序的。谢谢你的回答。我对它做了一点修改,效果非常好。set@lim1=ceilselect count from as24*0.75;set@lim2=从as24*0.25中选择地板计数;从“插入as24t选择*从as24限制”准备STMT;使用@lim1执行STMT;从“插入as24v选择*从as24限制”准备STMT?抵消?';使用@lim2、@lim1执行STMT;
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;