0

假设今天是 2013 年 11 月 16 日

并且,假设我有一张这样的日期表

------------------------
id | foreign_id | date
------------------------
1  | 1          | 2013-11-01 05:42:38
2  | 2          | 2013-11-04 04:21:22
3  | 2          | 2013-11-16 15:11:55

我想选择过去 24 小时没有记录的条目。

即:id #3 今天是 15:11,所以我不想选择foreign_id2。

我尝试在它的find api条件下使用 CakePHP 2.x

'HOUR(TIMEDIFF(NOW(), Traffic.accessed)) > 24'

其中交通是一些表,访问的是一些日期字段。不幸的是,这仍然选择了这条记录,因为它发现以前的条目的日期早于 24 小时。

请帮忙。

更新

我的实际查询是这样的

SELECT Traffic.accessed, Traffic.access_ip, Traffic.client_order_id 
FROM `mdb`.`client_orders` AS `ClientOrder`
LEFT JOIN `geclicks`.`traffics`
AS `Traffic` ON (`Traffic`.`client_order_id` = `ClientOrder`.`id`)
WHERE `ClientOrder`.`status` = 'ACTIVE' AND `ClientOrder`.`offer_clicks` = 0 
AND NOT (`ClientOrder`.`offer_id` = 0) AND ((`Traffic`.`access_ip` IS NULL) 
OR (((`Traffic`.`access_ip` <> "444") 
OR (((HOUR(TIMEDIFF(NOW(), MAX(`Traffic`.`accessed`))) > 24) 
AND (`Traffic`.`access_ip` = "444")))))) 
GROUP BY `Traffic`.`client_order_id` ORDER BY RAND() ASC
4

1 回答 1

1

要选择所有内容:

SELECT * FROM Records  

现在让我们过滤掉坏的外键(例如 1、2 和 3):

SELECT * FROM Records WHERE foreign_id NOT IN (1, 2, 3)  

把它放在一边......我们如何找到foreign_id在 24 小时内有条目的 s:

SELECT DISTINCT foreign_id FROM Records WHERE TIMEDIFF(CURRENT_TIMESTAMP(), date) <= 24

Plug that back in the original instead of the (1, 2, 3) example:

SELECT * FROM Records WHERE foreign_id NOT IN (SELECT DISTINCT foreign_id FROM Records WHERE TIMEDIFF(CURRENT_TIMESTAMP(), date) <= 24)  
于 2013-11-06T14:23:04.143 回答