VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: 冰点飞扬

一道经典的sql面试题!认为自己sql玩得挺转的进来!

[复制链接]

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-5-21 23:00:01 | 显示全部楼层
好像还是不对。。3个的话少删除了一个。
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-5-22 11:30:01 | 显示全部楼层
create table #temp
(学号 int)
insert into #temp
(select [学号]=min([学号]) from Test2 group by [姓名],[性别],[年龄]
delete from Test2 where 学号 not in (select 学号 from #temp)
drop #temp
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-5-24 16:00:01 | 显示全部楼层
create table #temp
(学号 int)
insert into #temp
(select [学号]=min([学号]) from Test2 group by [姓名],[性别],[年龄])
delete from Test2 where 学号 not in (select 学号 from #temp)
drop table #temp
更正
回复

使用道具 举报

0

主题

22

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-5-29 04:45:01 | 显示全部楼层
delete from table where exists (select 1 from (select max(学号) as 学号 from table group by 姓名,性别,年龄) 表别名 where 表别名.学号 != table.学号)
回复

使用道具 举报

0

主题

21

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-5-29 15:15:01 | 显示全部楼层

declare @t table(学号 int identity(1,1),
姓名 varchar(30),性别 nvarchar(1),年龄 int)

insert into @t

select 'xw','男',18 union all
select 'mc','女',18 union all
select 'mc','女',18 union all
select 'mc','女',18 union all
select 'ww','男',21 union all
select 'xw','男',18 union all
select 'xw','男',18

select * from @t

delete from @t where 学号 not in (select min(学号) from @t group by 姓名,性别,年龄)

select * from @t
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-30 09:15:01 | 显示全部楼层
很基础的sql!

lz 想求解自己的问题也不用这样吧?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-31 19:30:01 | 显示全部楼层
9494 哈哈
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-5 12:45:01 | 显示全部楼层
DELETE FROM Test2
where [学号] in(
select a.[学号]
from Test2 a,(select [姓名],[性别],[年龄] from Test2 group by [姓名],[性别],[年龄] having count(*)>1)b
where a.[姓名]=b.[姓名] and a.[性别]=b.[性别] and a.[年龄]=b.[年龄]
and
[学号] not in
(select [学号]=min([学号]) from Test2 group by [姓名],[性别],[年龄] having count(*)>1)
)
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-15 10:00:01 | 显示全部楼层
呵呵,是不是我理解错楼主的意思了?这个问题不难啊。
create table #table
(
[学号] varchar(5),
[姓名] varchar(20),
[性别] varchar(2),
[年龄] int
)
--drop table #table
insert into #table ([学号],[姓名],[性别],[年龄])
select '0001','xw','男',18 union all
select '0002','mc','女',18 union all
select '0003','mc','女',18 union all
select '0004','mc','女',18 union all
select '0005','ww','男',21 union all
select '0006','xw','男',18 union all
select '0007','xw','男',18

--显示需要保留的
select min(学号),[姓名],[性别],[年龄] from #table
group by [姓名],[性别],[年龄] order by  min(学号)

--删除不需要保留的
delete --select *
from #table
where [学号] not in (select min(学号) from #table
group by [姓名],[性别],[年龄])
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-2 11:45:01 | 显示全部楼层
崩溃了,没有一个正确的呢。
题目是要求删除所有重复的记录,一个记录都不保留。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表