繁体   English   中英

SQL Server 2005:今天的随机记录

[英]Sql Server 2005: Today's random records

我可以很容易地得到一个随机记录:

SELECT *    FROM MyTable    ORDER BY NewId() 

我可以很容易地获得带有“今天的日期”的记录:

SELECT *    FROM MyTable    WHERE MyDate = "2010-24-08"  -- db doesn't store times

但是我将如何结合两者呢?

随机获取1条记录...今天的日期。

如果没有找到...从昨天(今天-1)获得1条随机记录。

如果没有找到...从etc等今天1中获得1条随机记录

...直到找到1条记录。

只需按条件将日期设为主要订单即可:

select top(1) *
from Table
order by Date desc, newid();

如果存储日期为全天时间,你需要舍出来,只一天的时段: cast (Date as DATE)在SQL 2008或cast(floor(cast(Date as FLOAT)) as DATETIME)在预2008。

使用TOP运算符

  SELECT TOP 1 *    
    FROM MyTable    
   WHERE MyDate = "2010-24-08" 
ORDER BY NEWID() 

...与ORDER BY NEWID() 如果没有ORDER BY,通常在大多数情况下,您将获得过滤返回的记录的第一个插入行/记录,但是确保顺序的唯一方法是使用ORDER BY子句。

SQL Server 2005+支持在TOP值上使用方括号,因此您可以在方括号中使用变量,而无需使用动态SQL。

这会给您您想要的吗?

SELECT TOP 1 *
FROM MyTable
ORDER BY MyDate desc, NewId()

假设没有日期晚于今天。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM