欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 根據字段去重復數據

張吉惟2年前9瀏覽0評論

MySQL 是一個流行的開源數據庫管理系統,它可以執行各種高效和可靠的數據庫任務。

在 MySQL 中,我們可以使用SELECT DISTINCT語句來去重一個數據表中的數據。但是,如果我們只想根據某一個字段來去重,該怎么辦呢?

下面看一個例子:

CREATE TABLE students(
id INT,
name VARCHAR(20),
age INT,
class VARCHAR(10)
);

我們在 students 表中插入一些數據:

INSERT INTO students VALUES (1,'Tom',18,'A');
INSERT INTO students VALUES (2,'Mary',18,'B');
INSERT INTO students VALUES (3,'John',20,'A');
INSERT INTO students VALUES (4,'Lucy',19,'B');
INSERT INTO students VALUES (5,'Amy',21,'C');
INSERT INTO students VALUES (6,'Bob',18,'D');
INSERT INTO students VALUES (7,'Alice',20,'C');
INSERT INTO students VALUES (8,'Peter',19,'D');
INSERT INTO students VALUES (9,'Lily',21,'A');
INSERT INTO students VALUES (10,'David',20,'B');

現在我們想根據 class 字段來去重,代碼如下:

SELECT * FROM students
GROUP BY class;

執行結果如下:

id   name    age  class
-----------------------
1    Tom     18   A
2    Mary    18   B
5    Amy     21   C
6    Bob     18   D

我們可以看到,根據 class 字段來去重,只剩下了每個 class 中的第一條數據,而其它數據被忽略了。

如果我們想要保留每個 class 中的最新數據,該怎么辦呢?可以使用以下語句:

SELECT * FROM students
WHERE (class, id) IN (
SELECT class, MAX(id) FROM students GROUP BY class
);

執行結果如下:

id   name    age  class
-----------------------
9    Lily    21   A
10   David   20   B
7    Alice   20   C
8    Peter   19   D

這樣就保留了每個 class 中最新的一條數據。

通過以上的例子,我們可以看到 MySQL 中根據字段去重復數據的方法。這種方法可以節省存儲空間,提高數據查詢效率。