MySQL只查找那些24小时内没有外键的
假设今天是2013年11月16日 假设我有一张这样的日期表MySQL只查找那些24小时内没有外键的,mysql,sql,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
------------------------
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
我尝试在CakePHP2.x的FindAPI条件中使用它
'HOURTIMEDIFFNOW,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
要选择所有内容,请执行以下操作:
SELECT * FROM Records
现在,让我们过滤掉坏外键,例如1、2和3:
SELECT * FROM Records WHERE foreign_id NOT IN (1, 2, 3)
把它停在一边。。。我们如何找到24小时内有条目的外来\u ID:
SELECT DISTINCT foreign_id FROM Records WHERE TIMEDIFF(CURRENT_TIMESTAMP(), date) <= 24
如何选择包含过去24小时记录的条目?'HOURTIMEDIFFNOW,Traffic.accessed<24'像这样我想要HOURTIMEDIFFNOW,maxaccessed>24No这样的内容。您需要其外部\u ID与以前的响应不匹配的所有记录。你可以用一个左连接来实现,它是空的。我现在没有MySQL数据库,所以如果有人可以查看TIMEDIFF部分并更正它,那就太好了。是的,谢谢,这对我帮助很大。我的意思是不在声明中。顺便说一句,如果有人在CakePHP中看到NOT in是这样的“NOT”=>array'ClientOrder.id'=>$ip\u VISTER其中$ip\u VISTER是一个查找->'list',array。。后果谢谢@BeemerGuy
SELECT * FROM Records WHERE foreign_id NOT IN (SELECT DISTINCT foreign_id FROM Records WHERE TIMEDIFF(CURRENT_TIMESTAMP(), date) <= 24)