mysql:sql语句,想了半天没头绪,请教大家

收货人 收货地址 订单号 用户ID

张三 北京 1001 1

张四 上海 1002 2

张五 北京 1003 3

张六 广州 1004 4

张三 深圳 1005 5

张七 上海 1006 6

现在有这样的一个需求,每一行假定是一条订单记录,收货人和收货地址字段任意一项与其他订单一致,即认为是关联订单
如果关联订单大于3条,就把这条订单对应的用户ID记录下来。最终要的就是用户ID的列表。
比如:**订单号1001和订单号1005的收货人都是‘张三’,证明这两条订单是关联订单,而且订单号1001和订单号1003的收货地址都是‘北京’
证明这两条订单也是关联的,这样的话,1001、1003、1005是关联订单,关联订单大于3条了,就把这三条订单对应的用户ID查询出来。**

就是这么个需求,不知道我描述的清楚不,请大家帮忙看看,这条sql语句如何写?

第一次提问,也没有能悬赏啥币,大家将就一下吧

黑体字是重点

关键看什么数据库,不同的数据库实现难度不一样
基本思路可以这样
1、根据收货人分组,记录没组的个数A1
2、根据收货地址分组,记录没组的个数A2
3、相同记录A1和A2相加得A3
4、查找出A3>3的记录

select 用户ID,count(收货人) 收货人,count(收货地址) 收货地址 from 表名 group by 用户ID having count(收货人)>3 or count(收货地址)>3

看看下面是不是你要的

 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

拿出地址和用户名字
select username, count(*) as qty from table1
group by username
having count(*)>=3
;
select address, count(*) as qty from table1
group by Address
having count(*)>=3
;

再根据这个拿userid。