1.请教一些数据库的问题:在oracle中,序列和索引有什么区别?
请大虾们指点一下!谢谢!
2.一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合.
你先按你自己的想法做一下,看结果有我的这个简单吗?
答:select a.name, b.name 
from team a, team b 
where a.name < b.name
这个答案我不理解!请大虾们指点一下!
3.学生表 如下:
自动编号   学号   姓名 课程编号 课程名称 分数
1        2005001  张三  0001      数学    69
2        2005002  李四  0001      数学    89
3        2005001  张三  0001      数学    69
删除除了自动编号不同,其他都相同的学生冗余信息答案是: delete tablename where 自动编号 not in(select min(自动编号) from tablename group by 学号,姓名,课程编号,课程名称,分数)
这个答案我不理解,请大虾们指点一下!

解决方案 »

  1.   

    1、序列和索引是两个完全不同的概念,序列是用来去一个顺序号,比如一个表的主键可以取该序列,每次访问取得一个序号,且不会重复
    索引是为了加快查询速度而引入的,类似于书中的目录。
    2、select a.name,b.name from a,b where a.name<>b.name
      

  2.   

    第1题和第2题三楼已经答对了,第三题是这样的3.
    delete tb
    where id in(
    select id
    from (select id,row_number() over(partition by 学号,姓名,课程编号,课程名称,分数 order by id) rn from tb)
    where rn>1)
      

  3.   

    第2题 就是楼主给的那样最简单吧
    select a.name, b.name 
    from team a, team b 
    where a.name < b.name 
      

  4.   

    说下我对第2个和第3个理解 :
    第2个  : 4个球队之间的编号是具肯定不一样的  abcd之间具有明显的大小关系对比,要获得的可以理解为 ab  ac ad  bc bd cd 这种组合, 所以他用 '<'是完全可以搞定的。
    第3个  :  按照 ‘学号,姓名,课程编号,课程名称,分数’ 分组后取得的 ‘自动编号’不唯一的时候,肯定会有  max 值或者 min 值 ,这样,只要相等的  可以delete掉了  ,一条的肯定 delete 不掉。   我不知道LZ 发的和  下面各位发的 哪个 效率更高点,希望各位达人观点。
      

  5.   

    delete table a where (select max(id) from table b where a.col_one=b.col_one and a.col_two=b.col_two and ....) <> a.id
      

  6.   

    1.这个GOOGLE上搜下就知道了
    2.如果考虑主客场的情况下:
    SELECT DISTINCT A.NAME ANAME,B.NAME BNAME FROM TB2 A CROSS JOIN TB2 B
    WHERE A.NAME<>B.NAME;
    3.delete tb 
    where id in( 
    select id 
    from (select id,row_number() over(partition by 学号,姓名,课程编号,课程名称,分数 order by id) rn from tb) 
    where rn>1)
    抄新人类的,嘿嘿~~~