有两个数据表T1和T2, T1表中有一个字段f, T2表中也有一个字段f, 类型相同, 均为整型(int),现在假设T1和T2表分别为A校B年级两个班(假设这个年级共有两个班, 每班40人)的一次语文考试成绩表, 字段f表示成绩,现在请你使用SQL语句查询一下这次考试中这个年级的前十名学生的姓名(假设T1和T2中有一个字段studentName表示学生姓名)。

解决方案 »

  1.   

    select top 10 studentname from t1,t2 order by f DESC
      

  2.   

    SELECT top 10 T3.studentName,T3.f 
    from (SELECT studentName,f FROM T1 UNION SELECT studentName,f FROM T2) as T3
    order by f DESC
      

  3.   

    SELECT top 10 T3.studentName,T3.f 
    from (SELECT studentName,f FROM T1 UNION SELECT studentName,f FROM T2) T3
    order by T3.f DESC第二行as不应该有吧?关于union all:缺省地,UNION 的结果不包含任何重复的行,除非声明了 ALL 子句,楼上的?难道有同班同名同分?
      

  4.   

    顶 ashy999(愚夫)
    一般再写SQL语句的时候不要用多表连接比如是from 表名1,表名2,...
    而是用嵌套查询,效率要高出很多.