Sql 从表中选择最近N天的数据
价格日期时间 一点零二零一零零八一五一 一点二二零一零零八一五二 一点三二零一零零八一五三 2 20100814 1 三点一二零一零零八一三一 三点二二零一零零八一三二 : : : 现在我想选择最新的3天价格与所有的时间,我这样使用Sql 从表中选择最近N天的数据,sql,Sql,价格日期时间 一点零二零一零零八一五一 一点二二零一零零八一五二 一点三二零一零零八一五三 2 20100814 1 三点一二零一零零八一三一 三点二二零一零零八一三二 : : : 现在我想选择最新的3天价格与所有的时间,我这样使用 select price, date from allquotes where date in (select date from allquotes group by date order by date desc limit 3)
select price, date from allquotes where date in
(select date from allquotes group by date order by date desc limit 3)
是这样吗?这有效吗?
有什么改进的建议吗
如果我只想显示一个最新时间的价格,怎么做
非常感谢 这应该可以在SQL Server上实现:
select top 3 q.pricee, q.date, q.time
from (
select date, max(time) as MaxTime
from allquotes
group by date
) qm
inner join quotes q on qm.date = q.date and qm.MaxTime = time
order by date desc
对于MySQL,请尝试:
select q.pricee, q.date, q.time
from (
select date, max(time) as MaxTime
from allquotes
group by date
) qm
inner join quotes q on qm.date = q.date and qm.MaxTime = time
order by date desc
limit 3
这应该可以在SQL Server上实现:
select top 3 q.pricee, q.date, q.time
from (
select date, max(time) as MaxTime
from allquotes
group by date
) qm
inner join quotes q on qm.date = q.date and qm.MaxTime = time
order by date desc
对于MySQL,请尝试:
select q.pricee, q.date, q.time
from (
select date, max(time) as MaxTime
from allquotes
group by date
) qm
inner join quotes q on qm.date = q.date and qm.MaxTime = time
order by date desc
limit 3
如果同一日期有重复项,您希望赢得哪个价格?还是希望显示所有重复项?谢谢您的评论,我更新了我的postAny特殊风格的SQL?这个表有多大?您使用哪个数据库?您将进行全表扫描、分组操作和排序操作。是的,它可能是有效的,但这取决于我的前两个问题。如果同一日期有重复项,您希望赢得哪个价格,或者您希望显示所有重复项?感谢您的评论,我更新了我的postAny特定风格的SQL?这个表有多大?您使用哪个数据库?您将进行全表扫描、分组操作和排序操作。这是对的,它可能是有效的,但这取决于我的前两个问题。