sqlserver对字段进行去重

数据如下

张三     18岁    男

张三      17岁   男

我想只取一条数据该如何去做呢?

FineReport SQL 3333xzx 发布于 2022-11-29 22:14
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
2
axingLv6专家互助
发布于2022-11-30 02:28

同名的只取一个

select * from (

select row_number() over(partition by 姓名 order by 年龄) as rn,* from 表名

) t where rn=1

最佳回答
1
shirokoLv6资深互助
发布于2022-11-29 22:48

select top 1 姓名,年龄,性别 FROM 表 where 姓名='张三'

如果只要随便取一条这样就可以了,如果要按一定规则取则需要继续加规则,比如按最大年龄 就加上排序

最佳回答
0
myseanLv3初级互助
发布于2022-11-30 11:16

有自增列就更容易查

select * from table where id in(

select max(id)  from table  group by 姓名  having count(*)>1 

)

最佳回答
0
用户CKn4B8768Lv2见习互助
发布于2022-11-30 20:50

这个问题,本身好像不是很完整。我假想下你的需求:

QQ图片20221130204508.png   

查询语句如下:

select name ,age ,sex 

from

(select * ,row_number()over(partition by name order by age desc) 组别 from tablename) tt 

where 组别=1

先使用row_number() over(patiton by..)分组排序,然后取出排序为1的型号

以下为原表,可以试着复制试下:

创建表:

create table tablename (

name nvarchar(10),

age int default 0 ,

sex nvarchar(2)

)

插入表值:

insert into tablename (name,age,sex) values (

'张三',17,'男')

insert into tablename (name,age,sex) values (

'张三',16,'男')

insert into tablename (name,age,sex) values (

'李思',17,'女')

insert into tablename (name,age,sex) values (

'李思',16,'女')

  • 5关注人数
  • 411浏览人数
  • 最后回答于:2022-11-30 20:50
    请选择关闭问题的原因
    确定 取消
    返回顶部