SQL选择直到完全出现问题

时间:2010-07-28 10:18:09

标签: sql select union

我正在尝试编写一些使用联合从几个表中提取的SQL,其中行上的日期不到一个小时。

但是如果SQL查询的总行数不超过20,那么它应该将日期的位置改为少于两个小时,依此类推,直到检索到20行为止。

这可以仅在SQL中完成吗?我有一种使用PHP实现它的方法,但是更喜欢在SQL中完成它。

2 个答案:

答案 0 :(得分:0)

按日期排序时,您应该选择前20个。

所以不需要计算范围..

Sql Server

SELECT TOP 20 ..

其他数据库

SELECT ... LIMIT 0, 20

答案 1 :(得分:0)

这可能不适用于所有数据库服务器,但您应该可以执行类似

的操作
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。