一道数据库面试题求高手解答

hy519 2013-03-18 11:05:52
用SQL语句删除除了id不同,其他都相同的学生表信息。
...全文
328 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
丹青妙笔 2013-03-20
  • 打赏
  • 举报
回复
嗯嗯,菜鸟路过,学习中,看来sql要学的还很多哦
程序员一灯 2013-03-20
  • 打赏
  • 举报
回复
引用 5 楼 hqshaozhu 的回复:
楼上正解 我思考了半天终于想通了 楼上的意思是先将表中的数据按除ID之外的所有列进行分组 之后每个组的数据就是除了ID都相同的数据了 这样每个组只需保留一条记录即可 这是使用max(id)或者min(id)都可以 总之只要从每组取出一个id即可 然后将整个表中的记录id不在所选择出的id之列的全部删除即可 看来我得好好学习sql了 ……
解释的很好。。。。。。学习了
冰思雨 2013-03-20
  • 打赏
  • 举报
回复
你把一张表里的数据,按照某个规则进行分组,那么,结果里面没一组都会有很多条记录。 这个时候,你只想每一组里取一条记录显示出来,怎么办? 我这里就是把每一组里,ID最大的那条记录取出来。
冰思雨 2013-03-19
  • 打赏
  • 举报
回复
楼上真是人才啊,这都能看懂 。 嘿嘿,我很看好你哟。
biany2 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 preferme 的回复:
delete from <table_name> wehere id not in (select max(id) from <table_name> group by <除id外的其他字段> )
少主无翼 2013-03-19
  • 打赏
  • 举报
回复
楼上正解 我思考了半天终于想通了 楼上的意思是先将表中的数据按除ID之外的所有列进行分组 之后每个组的数据就是除了ID都相同的数据了 这样每个组只需保留一条记录即可 这是使用max(id)或者min(id)都可以 总之只要从每组取出一个id即可 然后将整个表中的记录id不在所选择出的id之列的全部删除即可 看来我得好好学习sql了
普凡 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 preferme 的回复:
delete from <table_name> wehere id not in (select max(id) from <table_name> group by <除id外的其他字段> )
+1
冰思雨 2013-03-19
  • 打赏
  • 举报
回复
delete from <table_name> wehere id not in (select max(id) from <table_name> group by <除id外的其他字段> )
forgetsam 2013-03-19
  • 打赏
  • 举报
回复
通用写法: delete from 表 where 不同的字段 not in (select max(不同的字段) from 表 group by 相同的字段)
hy519 2013-03-19
  • 打赏
  • 举报
回复
加max或者min是什么意思啊,不加难道不可以么
zhzeqiang 2013-03-19
  • 打赏
  • 举报
回复
顶啊,人才啊
Ada168855 2013-03-18
  • 打赏
  • 举报
回复
那就把学生的其他信息来作为依据进行删除操作啊 比如name=?,age=?等等

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧