一个sql笔试题,求解答

[复制链接]
查看11 | 回复5 | 2011-11-23 12:37:23 | 显示全部楼层 |阅读模式
1.delete语句里不能有group by!~2.你的这个条件会把很多不应该删除的数据删除的!~delete * from 表 where id in (select 表.id from 表,(select min(id) from 表 group by name having count(name)>1) aaa --最里面的子表:取所有重复数据的最小idwhere 表.idaaa.idhaving count(name)>1)--外面的子表:取所有重复数据的id(不包含最里面子表的最小id) 这样才能删除满足你面试题的条件 删除所有重复的数据,保留最小Id的如果是oracle或者sqlserve...
回复

使用道具 举报

千问 | 2011-11-23 12:37:23 | 显示全部楼层
delete * from 这个语法没有deletea where id not in (select
min(id)
from
a
group
by name)这个是可以的,你看看吧!希望能帮到楼主...
回复

使用道具 举报

千问 | 2011-11-23 12:37:23 | 显示全部楼层
faint...语法就通不过。group by 用在聚合函数中,聚合函数是什么你应该知道吧,就是sum,min,max之类的。group by 要直接和select语句匹配的。好好补补基础吧。...
回复

使用道具 举报

千问 | 2011-11-23 12:37:23 | 显示全部楼层
设表名为Person,下面是你所需要的delete语句:delete from person p1 where id not in (select min(id) from person group by name)...
回复

使用道具 举报

千问 | 2011-11-23 12:37:23 | 显示全部楼层
delete后不能加group by你应该这么答delete from 表 where id not in (select min(id) from 表 group by name)...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行