mysql 截取日期的前10位_mysql 每组提取某日期前的 N 条数据?

有一张表 stockprice,里面存的是 2800+股票的价格数据。

我想提取某个日期前的,比如 2016-01-01 ,每个股票的 N 条数据。请问该怎么做啊?

对于单个股票,我是用

select date, tick,open,high,low,close,volume from stockprice

where date < '2016-01-01' and tick='000001' and volume>0

order by date desc

limit N;

这样的语句.(#volume>0 是剔除掉停牌数据)

现在我只会写个循环,每个股票读取一次数据库。问题是整个程序跑下来要用 10 多分钟,但是真正程序运行时间不到 1 分钟。那么多时间都花在读取数据上了。

我试过用

select * from stockprice

where dt < '2016-01-01'

limit N * 2800; # 假设股票一共 2800 只。

耗时 1 秒多一点。而且我的 N 不大,内存是够用的。所以一次读取数据库的话应该能快许多。

现在的想法是按照股票代码分组,每组 N 条。

在网上搜到一条可以用 join all , 但那是针对分组比较少的。

应该比较符合我的要求,后面的代码有点难以理解。 能帮我解释下嘛?

更宽泛一点的问题是,哪里可以练习写 sql 语句的? 普通的查询我还可以写,涉及到同一个表的和自己 join 的 /中间含有子查询的,我会遇到一点问题。想找个项目专门练习一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值