Mysql用一条语句怎么取出一个表中记录的1/4。
解决方案 »
- Mysql int类型长度问题 这个问题让我狠匪夷所思
- 40个表里面有150万条数据转移 效率难题!跪求 解决方案
- 请问"多步操作产生错误。请检查每一步的状态值"是什么错误?怎么解决?
- 【【【如何让count(*)为0的字段也显示?】】】
- SET GLOBAL log_bin_trust_function_creators = 1 如何在my.cnf里面配置?
- 先创建临时表插入数据,再定义游标变量报错
- select into null 付值问题
- 我在solaris上安装mysql总是报这样的错:
- 求问一条查询语句!难!
- 取出MYSQL中重复的纪录数,急啊!!!
- 还是MYSQL的问题(在线等待)[几乎每天都会在]
- 问个概念性的问题,关于自增字段,没查到相关资料
首先取得表的总数 @total_count ;
然后
用动态语句取:select count(*) into @total_count from tb_name;
set @i=floor(@total_count/4);
set @str = concat('select * from tb_name limit 0,',@i);
prepare stmt1 from @str;
execute stmt1;
deallocate prepare stmt1;
select count(*) into @total_count from tb_name;
set @i=floor(@total_count/4);
select * from tb_name limit 0,@i;
+----------+
| count(*) |
+----------+
| 201 |
+----------+
1 row in set (0.00 sec)mysql> select count(*) from tc a
-> where (select count(*) from tc)/4>=(select count(*) from tc where id<a.id);
+----------+
| count(*) |
+----------+
| 51 |
+----------+
1 row in set (0.02 sec)mysql>效率很差的一种方法?建议这种功能应该在程序中实现而不是SQL语句中来实现。通过程序得到总数 N count(*) 然后直接 limit N
假设表中只有一个字段 ID
SELECT A.ID FROM LSB2 A LEFT JOIN LSB2 B ON A.ID>=B.ID GROUP BY A.id
HAVING COUNT(B.id)<=CEIL((SELECT COUNT(ID) FROM LSB2)/4)