A表
A表的字段有studentId(pk),name,sex,age,scoreB表
B表的字段有classId(pk),className,teacher,studentId(fk)
问题:
用一条SQL语句查出任意十个学生的所有信息

解决方案 »

  1.   

    select * from (
    select a.studentid,name,sex,age,score,classname,teacher from a ,b
    where a.studentid=b.studentid order by dbms_random.random )
    where rownum<11
      

  2.   

    恩,开始有点不明白,关于order by 的问题,后来google了下,原来可以这样理解
    select * from ( 
    select a.studentid,name,sex,age,score,classname,teacher,dbms_random.random from a ,b 
    where a.studentid=b.studentid order by dbms_random.random ) 
    where rownum <11谢谢1楼的兄弟
      

  3.   

    另外我猜想一楼的兄弟只所以要这样写,应该是为了随机的取得数据,但据 http://www.cnblogs.com/temptation/archive/2007/05/16/748897.html 里面所提到的
    oracle取数据本身就是随机的,比如这样这个SQL
    SELECT * FROM A WHERE rownum<11 ORDER BY name;
    这样就能产生10行随机的数据,但是我不能确定在两个表做了链接之后还是不是随机取数据,由于这里没有测试的环境,
    所以不能给出一个肯定的结果,希望楼主可以帮忙测试下,呵呵
    SELECT * FROM(SELECT a.student,name,sex,age,score,classname,teacher from a,b WHERE a.studentid=b.studentid ) WHERE rownum <11 ORDER BY name;或者下面这句(才接触oracle,不知道下面这个合不合规则,大家不要笑话我哈)
    SELECT a.student,name,sex,age,score,classname,teacher from a,b WHERE a.studentid=b.studentid AND rownum <11 ORDER BY name;