仅选择新的无重复值

时间:2014-03-26 01:03:00

标签: php mysql laravel-4

我有一个客户信息表,我需要从中提取不同的状态,但仅限于时间戳比上次检查更新的地方。不同的值也需要与所有旧的检查区别开来。

表:

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')

但我不知道该怎么做。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果自上次检查后创建了某些内容,则min(created_at)位于上次检查日期之后。因此,以下应该做你想要的:

select c.state
from clients c
group by state
having min(created_at) >= @yourlastcheck;