0

我有一张每 30 秒获得一条新记录的表。我需要知道每个用户的最新记录和时间戳值。

我写了以下查询:

select created_user,  MAX(created_date)
from gisadmin.FORESTRY_LOCATIONLOG_vw
Group by created_user

它让我得到了我想要的。问题是我需要将其输入的应用程序为我预定义了部分选择语句(试图提供帮助)。

所以查询开始是强制性的

select * from gisadmin.FORESTRY_LOCATIONLOG_vw WHERE

有没有人对如何使这项工作有想法

4

3 回答 3

3

你可以使用EXISTS

SELECT * 
FROM gisadmin.FORESTRY_LOCATIONLOG_vw
WHERE EXISTS (SELECT * 
              FROM  (SELECT created_user,  MAX(created_date)'created_date'
                     FROM gisadmin.FORESTRY_LOCATIONLOG_vw
                     GROUP BY created_user) b
              WHERE gisadmin.FORESTRY_LOCATIONLOG_vw.created_user = b.created_user
                 AND gisadmin.FORESTRY_LOCATIONLOG_vw.created_date = b.created_date)
于 2013-07-29T16:03:47.623 回答
0

这是一个快速的解决方案:将其用作子查询

select created_user,  MAX(created_date)
from 
(
select * from gisadmin.FORESTRY_LOCATIONLOG_vw WHERE 1=1 //append this
)
Group by created_user

请注意,我添加了1=1which 将始终被评估为 true 来处理您的Where子句。

于 2013-07-29T15:37:02.860 回答
-1
select * 
from gisadmin.FORESTRY_LOCATIONLOG_vw
WHERE (something that returns no records)

忽略第一个查询返回的任何内容,然后做你自己的事情。

select created_user,  MAX(created_date)
from gisadmin.FORESTRY_LOCATIONLOG_vw
Group by created_user
于 2013-07-29T15:39:23.317 回答