我试图写一些SQL,从使用工会的几个表,其中的行日期小于一个小时拉。SQL选择满为止这类问题
但是,如果从SQL查询总行不加在一起大约是20,那么它应该改变哪里的日期是不到两个小时和检索等等,直到20行。
这是可能在SQL纯粹吗?我也有一种使用PHP来实现它的方式,但宁愿将它全部在SQL中完成。
我试图写一些SQL,从使用工会的几个表,其中的行日期小于一个小时拉。SQL选择满为止这类问题
但是,如果从SQL查询总行不加在一起大约是20,那么它应该改变哪里的日期是不到两个小时和检索等等,直到20行。
这是可能在SQL纯粹吗?我也有一种使用PHP来实现它的方式,但宁愿将它全部在SQL中完成。
时按日期倒序排列,你应该选择第一个20 ..
所以没必要计算范围..
Sql Server的
SELECT TOP 20 ..
其他的DB
SELECT ... LIMIT 0, 20
这可能不会对所有数据库服务器的工作,但你应该能够做到像
SELECT TOP 20 *
FROM (SELECT your columns from table1 UNION SELECT your columns from table2) temp
ORDER BY [the date column] DESC
从子查询选择会减慢速度了一下,不过,你必须避免在子查询的WHERE子句(或者至少,他们设置远远不够回来,他们会始终返回至少20行),以使事情发挥作用。
有可能是一些非常相似,以至于会使用MySQL,因为它没有做TOP xxx
。您应该能够说LIMIT 20
末代替,但我不知道的MySQL是否会让你从这样的子查询中进行选择。我记得过去曾经遇到过问题,但坦率地说,MySQL是一款玩具直到v5.0。
是的但我想要的是,如果选择的数量少于二十,扩大搜索范围,从最近一小时创建的行到最近两个小时创建的行,等等,直到已选择二十行 – wiggles 2010-07-28 10:29:01
@wiggles :重点是,您选择的比您需要的多,按日期降序排序,然后使用“TOP”或“LIMIT”进行限制。这只给你20条最近的条目。 – cHao 2010-07-28 10:36:19
阅读完后,解决了我的问题。谢谢。 – wiggles 2010-07-28 10:38:42