CREATE TABLE IF NOT EXISTS `ods` (
`od_id` int(10) unsigned NOT NULL,
`od_member_id` int(10) unsigned NOT NULL,
`od_shop_id` int(10) unsigned NOT NULL,
`od_addtime` int(10) unsigned NOT NULL,
PRIMARY KEY (`od_id`),
KEY `od_member_id` (`od_member_id`,`od_shop_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
每一条记录是一个订单,分别是订单ID、会员ID、商城ID、下单时间
多个商城的订单信息合并在同一个表中
现在想求得某一订单是否重复,重复标准是:同一个商城ID的同一个会员ID 24小时内下了超过1个订单,也就是求出24小时内同一个商城、同一个会员所下的所有订单ID。select od_id from ods, count(member_id) as rpt
where od_addtime>=od_addtime-86400
group by od_member_id, od_shop_id
having rpt>1上面这条语句对不对?
`od_id` int(10) unsigned NOT NULL,
`od_member_id` int(10) unsigned NOT NULL,
`od_shop_id` int(10) unsigned NOT NULL,
`od_addtime` int(10) unsigned NOT NULL,
PRIMARY KEY (`od_id`),
KEY `od_member_id` (`od_member_id`,`od_shop_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
每一条记录是一个订单,分别是订单ID、会员ID、商城ID、下单时间
多个商城的订单信息合并在同一个表中
现在想求得某一订单是否重复,重复标准是:同一个商城ID的同一个会员ID 24小时内下了超过1个订单,也就是求出24小时内同一个商城、同一个会员所下的所有订单ID。select od_id from ods, count(member_id) as rpt
where od_addtime>=od_addtime-86400
group by od_member_id, od_shop_id
having rpt>1上面这条语句对不对?
od_addtime>'2012-11-04'结果与od_addtime>'2012-11-04 00:00:00'相同 也可以用between and 来限制时间段的
如果你的时间是时间戳的话 那个你可以这样写od_addtime>from_unixtime('2012-11-04')
你用我写这个去试一下看看
from ods o
where exists (
select 1 from ods
where od_member_id=o.od_member_id
and od_shop_id=o.od_shop_id
and od_addtime between o.od_addtime-86400 and o.od_addtime+86400
)
按这样获得的记录没有按固定会员ID和商城ID计算,结果是所有订单的重复订单
这样又回到最原始的问题了:只能获得 group 里的单一记录,我要获得所有重复的订单ID。。