1、要求如下
收货人 收货地址 订单号 用户ID
张三 北京 1001 1
张四 上海 1002 2
张五 北京 1003 3
张六 广州 1004 4
张三 深圳 1005 5
张七 上海 1006 6
现在有这样的一个需求,每一行假定是一条订单记录,收货人和收货地址字段任意一项与其他订单一致,即认为是关联订单
如果关联订单大于3条,就把这条订单对应的用户ID记录下来。最终要的就是用户ID的列表。
比如:**订单号1001和订单号1005的收货人都是‘张三’,证明这两条订单是关联订单,而且订单号1001和订单号1003
需要用MySQL实现
2、实现如下:
create table order_table( rec_p varchar(20), rec_addr varchar(100), order_no varchar(20), user_id varchar(20) ); insert into order_table(rec_p,rec_addr,order_no,user_id) values('张三','北京','1001','1'); insert into order_table(rec_p,rec_addr,order_no,user_id) values('张四','上海','1002','2'); insert into order_table(rec_p,rec_addr,order_no,user_id) values('张五','北京','1003','1'); insert into order_table(rec_p,rec_addr,order_no,user_id) values('张六','广州','1004','3'); insert into order_table(rec_p,rec_addr,order_no,user_id) values('张三','深圳','1005','1'); insert into order_table(rec_p,rec_addr,order_no,user_id) values('张七','上海','1006','4'); select a.* from order_table a ,(select rec_p,count(*) pnum from order_table group by rec_p) a1 ,(select rec_addr,count(*) addrnum from order_table group by rec_addr) a2 where a.rec_p=a1.rec_p and a.rec_addr=a2.rec_addr and (pnum+addrnum)>3
原文地址:http://blog.csdn.net/danielinbiti/article/details/45029229