我有两列,一列是ID,另一列是用户名。但是我的数据不是很好,它包含多个用户的相同ID。我要做的是保留与此类ID对应的用户名之一。
*----*------------*
| ID | Username |
*----*------------*
| 1 | kumar |
| 2 | harold |
| 2 | kal |
| 3 | ram |
*----*------------*
输出应类似于
*----*------------*
| ID | Username |
*----*------------*
| 1 | kumar |
| 2 | harold |
| 3 | ram |
*----*------------*
我需要这样做。
答案 0 :(得分:1)
您可以使用distinct获取重复的1个用户ID。
SELECT DISTINCT column1, column2, ...
FROM table_name;
答案 1 :(得分:0)
您可以尝试这样做,这会将序列号分配给表中所有不同的id
。之后,您可以按预期获得每个ID的第一条记录。
; with cte as (
select row_number() over (partition by id order by (select 100)) as Slno,
Id, Username from table
)
select id, username from cte where slno = 1
测试场景:
Create table Table1 ( id int, TransportID varchar(10) )
insert into table1 ( id, TransportID )
values ( 1 , 'kumar' )
, ( 2 , 'sdsd' )
, ( 2, 'sdfdaw' )
, ( 3, 'sds')
; with cte as (
select row_number() over (partition by id order by (select 100)) as Slno,
Id, TransportID from table1
)
select id, TransportID from cte where slno = 1
输出将为
id TransportID
1 kumar
2 sdsd
3 sds
答案 2 :(得分:0)
只需使用聚合:
select id, max(username) as username
from t
group by id;