MySQL连接时怎么去重
时间 : 2023-03-09 06:45:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL连接时去重可以使用DISTINCT关键字或GROUP BY语句实现。

1. 使用DISTINCT关键字

在查询语句中使用DISTINCT关键字可以去掉重复的行。例如:

SELECT DISTINCT column_name FROM table_name;

其中column_name是要查询的列名,table_name是要查询的表名。

例如,我们有一个students表,包含学生名字和性别两列,其中包含重复数据:

| name | gender |

| ---- | ------ |

| Tom | Male |

| Tom | Male |

| Mary | Female |

要查询不重复的学生名字,可以使用以下语句:

SELECT DISTINCT name FROM students;

查询结果为:

| name |

| ---- |

| Tom |

| Mary |

此时结果集中只包含不重复的学生名字。

2. 使用GROUP BY语句

在查询语句中使用GROUP BY语句可以将结果集按照某列分组,并对每组进行聚合操作。

例如,我们有一个products表,包含商品名称、价格和库存量三列,其中包含重复数据:

| product_name | price | stock |

| ------------ | ----- | ----- |

| iPhone X | 999 | 100 |

| iPad Pro | 799 | 50 |

| iPhone X | 999 | 150 |

| MacBook Pro | 1499 | 20 |

要查询每种商品的总库存量,可以使用以下语句:

SELECT product_name, SUM(stock) FROM products GROUP BY product_name;

查询结果为:

| product_name | SUM(stock) |

| ------------ | ---------- |

| iPhone X | 250 |

| iPad Pro | 50 |

| MacBook Pro | 20 |

此时结果集中按照商品名称分组,并计算每组的库存总量。

需要注意的是,如果在GROUP BY语句中只指定了部分列,则结果集中可能会有重复的行。例如:

SELECT product_name, price, SUM(stock) FROM products GROUP BY product_name;

查询结果为:

| product_name | price | SUM(stock) |

| ------------ | ----- | ---------- |

| iPhone X | 999 | 250 |

| iPad Pro | 799 | 50 |

| MacBook Pro | 1499 | 20 |

此时结果集中包含重复的iPhone X商品信息,因为其价格相同。如果想要去除重复行,可以在查询语句中使用DISTINCT关键字,例如:

SELECT DISTINCT product_name, SUM(stock) FROM products GROUP BY product_name;

查询结果为:

| product_name | SUM(stock) |

| ------------ | ---------- |

| iPhone X | 250 |

| iPad Pro | 50 |

| MacBook Pro | 20 |

此时结果集中只包含不重复的商品信息。