select distinct 对单列去重,并取其他列第一行结果

本文详细讲解了在SQL中如何对某一列进行去重,并保留其他列的方法。通过使用group by和min/max函数,可以有效地实现数据去重,同时保持数据的完整性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所有数据

create table abc(id int, value int);
select id, value from abc;
+------+-------+
| id   | value |
+------+-------+
|    0 |     0 |
|    1 |     0 |
|    2 |     1 |
|    3 |     2 |
|    4 |     4 |
+------+-------+

value 去重

select distinct value from abc;
+-------+
| value |
+-------+
|     0 |
|     1 |
|     2 |
|     4 |
+-------+
select distinct value, id from abc;
+-------+------+
| value | id   |
+-------+------+
|     0 |    0 |
|     0 |    1 |
|     1 |    2 |
|     2 |    3 |
|     4 |    4 |
+-------+------+
select id, distinct value from abc;
语法报错

对 value 去重,id 取第一行

select min(id), value from abc group by value;
+---------+-------+
| min(id) | value |
+---------+-------+
|       0 |     0 |
|       2 |     1 |
|       3 |     2 |
|       4 |     4 |
+---------+-------+

故如果要对某一列 (value) 去重,且保留其他列,则需要用 group 和 min/max 配合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值