我有下表:
create table Customer (
custid integer not null,
prodid integer not null,
primary key(custid,prodid)
);
此表中的值如下:
Custid | Prodid
1 10
1 11
2 10
2 11
3 10
3 11
4 11
我希望得到所有那些购买相同产品的客户。
我的最终输出应该是一致的列表如下:
Custid
1,2
2,3
1,3
1,4
2,4
3,4
我写了一个查询如下:
SELECT custid, group_concat(prodid,',')
FROM
(SELECT UNIQUE custid FROM Customer)
group by custid;
但是这给了我:
1 10,11
2 10,11
3 10,11
4 11
如何从中获取成对的custid?如何在子查询中编写它?
有人可以帮助我。
答案 0 :(得分:1)
这样的东西应该可行,但请注意我今天没有MySQL访问权限,因此未经测试:
SELECT DISTINCT CONCAT(a.custid, ',', b.custid)
FROM Customer a
JOIN Customer b ON a.prodid = b.prodid
WHERE a.custid < b.custid