如何从 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
我有 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