Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从表中选择最近N天的数据_Sql - Fatal编程技术网

Sql 从表中选择最近N天的数据

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)

价格日期时间 一点零二零一零零八一五一 一点二二零一零零八一五二 一点三二零一零零八一五三 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)
是这样吗?这有效吗? 有什么改进的建议吗

如果我只想显示一个最新时间的价格,怎么做


非常感谢

这应该可以在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?这个表有多大?您使用哪个数据库?您将进行全表扫描、分组操作和排序操作。这是对的,它可能是有效的,但这取决于我的前两个问题。