MySQL只能找到24小时内没有外键的用户

时间:2013-11-06 13:58:24

标签: mysql sql

让我们说今天是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小时没有记录的条目。

ie:id#3今天是15:11,所以我不想选择2的foreign_id

我尝试在Cake 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

1 个答案:

答案 0 :(得分:1)

选择所有内容:

SELECT * FROM Records  

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

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

暂停公园......我们如何找到24小时内有条目的foreign_id

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

将其重新插入原始内容而不是(1, 2, 3)示例:

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