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上面这条语句对不对?

解决方案 »

  1.   

    select * from ods where od_addtime>'2012-11-04' and od_addtime<'2012-11-05' group by od_member_id having count(od_member_id)>1
    od_addtime>'2012-11-04'结果与od_addtime>'2012-11-04 00:00:00'相同  也可以用between and 来限制时间段的
    如果你的时间是时间戳的话 那个你可以这样写od_addtime>from_unixtime('2012-11-04')
    你用我写这个去试一下看看
      

  2.   

    select *
    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
    )
      

  3.   

    前边加COUNT(*),后边加GROUP BY od_member_id, od_shop_id
      

  4.   


    按这样获得的记录没有按固定会员ID和商城ID计算,结果是所有订单的重复订单
      

  5.   


    这样又回到最原始的问题了:只能获得 group 里的单一记录,我要获得所有重复的订单ID。。
      

  6.   

    可以在group by后面再加or_id,然后count(member_id)
      

  7.   

    贴建表及插入记录的SQL,及要求结果出来看看