我有一个客户信息表,我需要从中提取不同的状态,但仅限于时间戳比上次检查更新的地方。不同的值也需要与所有旧的检查区别开来。
表:
Name City State created_at
Dan Springfield Ohio 2014-03-25 17:44:19.000000
Jon Philadelphia Pennsylvania 2014-03-25 17:44:19.000000
Sue Hollywood California 2014-03-25 17:44:19.000000
Ann Oxford Ohio 2014-03-25 19:44:19.000000
Al Chicago Illinois 2014-03-25 19:44:19.000000
所以说我已经检查了一次,发现了俄亥俄州,宾夕法尼亚州和加利福尼亚州。然后添加了两个新条目。下次我运行支票时,我只需要找到伊利诺伊州而不是俄亥俄州。
我试过了,
SELECT State, created_at FROM (SELECT DISTINCT State, created_at FROM clients) as temp WHERE created_at > '2014-03-25 17:44:19.000000' ORDER BY State ASC
在运行之后,我意识到我的思维过程在这个问题上是错误的,因为我仍然会重复。
我认为我需要的是,查找所有新条目
Select State FROM clients WHERE created_at > '2014-03-25 17:44:19.000000'
然后就那个结果,
选择状态FROM FROM结果WHERE状态不在(客户端WHERE created_at<' 2014-03-25 17:44:19.000000')
但我不知道该怎么做。
感谢您的帮助。
答案 0 :(得分:0)
如果自上次检查后创建了某些内容,则min(created_at)
位于上次检查日期之后。因此,以下应该做你想要的:
select c.state
from clients c
group by state
having min(created_at) >= @yourlastcheck;