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 中根據字段去重復數據的方法。這種方法可以節省存儲空間,提高數據查詢效率。
上一篇css讓input居中