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

标签 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 多个表要划分,我觉得一定有一个聪明的方法。

最佳答案

请找到一些独特的东西来订购,以验证您是否获得了补充套装。

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/

相关文章:

mysql - 如何在我的mysql中使用group_concat

sql - 当所有其他列都相等时,对具有不同标签的值的约束

sql - Oracle SQL 如何解析连接条件中的限定名称

java - 看不到数据库mysql的内容。使用 JSP/JDBC

mysql - 通过 SQL 查询重叠区域、地理坐标和半径

mysql - 结合 UNION 和 LEAST 的查询构造

两个表的 SQL 不同查询

mysql - 如何从对象动态设置mysql查询中的值?

mysql - 根据另一个表选择两列中的一些列

MySQL 案例匹配所有条件