mysql去重保留id最小的


百度一些去重,都不是想要的答案,就動手自己來了

CREATE TABLE users(
id VARCHAR(11),
NAME VARCHAR(11),
sex VARCHAR(5)
)

 

INSERT INTO users VALUES ('1','chen','男');
INSERT INTO users VALUES ('3','chen','男');
INSERT INTO users VALUES ('2','chen','男');
INSERT INTO users VALUES ('4','li','女');
INSERT INTO users VALUES ('1','li','女');
INSERT INTO users VALUES ('2','li','女');
INSERT INTO users VALUES ('1','zhou','男');
INSERT INTO users VALUES ('2','zhou','男');
INSERT INTO users VALUES ('3','zhou','男');

 demo數據如下:

需求:只查出name字段id最小的(去重不刪除)

 

 

首先想到的是用distinct,但是distinct只能返回一個字段,就比較尷尬了

SELECT DISTINCT(a.name)FROM (SELECT * FROM users ORDER BY id )a;

如果:

SELECT a.id,DISTINCT(a.name)FROM (SELECT * FROM users ORDER BY id )a;

 則會報錯:

錯誤代碼: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT(a.name)from (SELECT * FROM users ORDER BY id )a
LIMIT 0, 1000' at line 1

 

 正解:SELECT * FROM (SELECT * FROM users ORDER BY id )a GROUP BY a.name;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM