MySQL拼接数据集去重,去除重复的字段

在实际开发中,我们经常需要从数据库中获取数据并进行拼接,但有时候获取到的数据中可能包含重复的字段,这就需要我们进行去重操作。本文将介绍如何使用MySQL进行数据集的拼接和去重操作,并提供相应的代码示例。

一、拼接数据集

1.1 字符串拼接

在MySQL中,可以使用CONCAT函数进行字符串的拼接。假设我们有一个表students,包含学生的姓名和年龄两个字段:

CREATE TABLE students (
  name VARCHAR(50),
  age INT
);

INSERT INTO students VALUES ('Tom', 18);
INSERT INTO students VALUES ('John', 19);
INSERT INTO students VALUES ('Tom', 20);

现在我们希望将学生姓名和年龄进行拼接,可以使用以下SQL语句:

SELECT CONCAT(name, ' - ', age) AS info FROM students;

执行以上SQL语句后,将得到以下结果:

+--------+
|  info  |
+--------+
| Tom - 18 |
| John - 19 |
| Tom - 20 |
+--------+

1.2 数字拼接

如果需要将数字进行拼接,可以使用CAST函数将数字转换为字符串。假设我们有一个表orders,包含订单号和金额两个字段:

CREATE TABLE orders (
  order_no VARCHAR(50),
  amount DECIMAL(10, 2)
);

INSERT INTO orders VALUES ('20210101', 100.50);
INSERT INTO orders VALUES ('20210102', 200.75);
INSERT INTO orders VALUES ('20210103', 150.20);

现在我们希望将订单号和金额进行拼接,并保留两位小数,可以使用以下SQL语句:

SELECT CONCAT(order_no, ' - ', CAST(amount AS CHAR(10))) AS info FROM orders;

执行以上SQL语句后,将得到以下结果:

+---------------+
|      info     |
+---------------+
| 20210101 - 100.50 |
| 20210102 - 200.75 |
| 20210103 - 150.20 |
+---------------+

二、去重操作

2.1 去除重复行

如果我们希望去除数据集中的重复行,可以使用DISTINCT关键字。假设我们有一个表products,包含产品名称和价格两个字段:

CREATE TABLE products (
  name VARCHAR(50),
  price DECIMAL(10, 2)
);

INSERT INTO products VALUES ('Apple', 2.99);
INSERT INTO products VALUES ('Orange', 1.99);
INSERT INTO products VALUES ('Apple', 2.99);

现在我们希望获取所有不重复的产品名称和价格,可以使用以下SQL语句:

SELECT DISTINCT name, price FROM products;

执行以上SQL语句后,将得到以下结果:

+--------+-------+
|  name  | price |
+--------+-------+
| Apple  |  2.99 |
| Orange |  1.99 |
+--------+-------+

2.2 去除重复字段

如果我们希望去除数据集中某个字段的重复值,可以使用GROUP BYGROUP_CONCAT函数。假设我们有一个表students,包含学生姓名和所选课程两个字段:

CREATE TABLE students (
  name VARCHAR(50),
  course VARCHAR(50)
);

INSERT INTO students VALUES ('Tom', 'Math');
INSERT INTO students VALUES ('John', 'English');
INSERT INTO students VALUES ('Tom', 'Science');

现在我们希望获取每个学生所选的不重复课程,可以使用以下SQL语句:

SELECT name, GROUP_CONCAT(DISTINCT course) AS courses FROM students GROUP BY name;

执行以上SQL语句后,将得到以下结果:

+------+------------------+
| name |     courses      |
+------+------------------+
| John |      English     |
| Tom  | Math,Science |
+------+------------------+

三、代码示例

下面是一个使用Python连接MySQL数据库并进行数据拼接和去重操作的示例:

import mysql.connector

# 连接MySQL数据库
conn = mysql.connector.connect(
  host="localhost",
  user="root",
  password="123456",
  database="test"
)

# 创建游标对象
cursor = conn