如何从 MYSQL 查询的多个连接输出中删除重复行?

How to remove duplicate rows from the output of multiple joins of MYSQL query?

我有 3 个表: 客户, 购买, 产品

客户Table:

Cid ClientName
1 SAM
2 JOE

购买Table:

PurchaseID Cid ProductID
1 1 1
2 1 2
3 2 1

产品Table:

ProductID ProductName
1 JAM
2 BREAD

内部加入它们之后应该是这样的: 输出:

Cid ClientName ProductID ProductName
1 SAM 1 JAM
1 SAM 2 BREAD
2 JOE 1 JAM

我尝试了以下查询:

SELECT C.Cid, C.ClientName, Pr.ProductID, Pr.ProductName
FROM Client C
JOIN Purchase Pu
ON C.Cid = Pu.Cid
JOIN Product Pr
ON Pu.ProductID = Pr.ProductID

尽管我得到了所需的结果,但某些行的所有列中都有很多重复项。 例如:

Cid ClientName ProductID ProductName
1 SAM 1 JAM
1 SAM 1 JAM

如何从结果中删除重复行之一?

您可以添加分组依据以拥有唯一的行。

CREATE TABLE client(
cid INT,
client_name varchar(10) );

insert into client values
(1,'SAM'),
(2,'JOE'),
(1,'SAM');

CREATE TABLE purchase (
purchase_id INT,
cid INT,
product_id int );

insert into purchase values
(1,1,1),
(2,1,2),
(3,2,1);

CREATE TABLE product  (
product_id INT,
product_name varchar(10) );

insert into product values
(1,'JAM'),
(2,'BREAD'),
(1,'JAM');


SELECT C.Cid, C.client_name, Pr.product_id, Pr.product_name
FROM client C
JOIN purchase Pu ON C.cid = Pu.cid
JOIN product Pr ON Pu.product_id = Pr.product_id
group by  C.Cid, C.client_name, Pr.product_id, Pr.product_name;

结果:

cid client_name product_id  product_name
  2    JOE         1          JAM
  1    SAM         1          JAM
  1    SAM         2          BREAD

我在演示中添加了一些重复的值来区分。 Demo