oder by 后面能不能接select查询的啊
我现在有这样一个需求
两张表,学生表:user 成绩表:score
一个user有多个学期的score,但可能有学学生这个学期没有成绩
现在我要查出所有学生,并按照所选的那个学期的学习成绩排序现在的问题就是必须查出所有学生,包括没成绩的学生,
如果就差有成绩的直接在成绩表里差就可以了,
所以我查出所有的学生,在order按照那个学期的成绩排序一下,
但是好像不行,高手指点指点啊

解决方案 »

  1.   

    可以接。 不过ORDER BY 是行级的。除非你的SELECT返回的只有一行。
      

  2.   

    left join 就可以了:select t1.*,ifnull(t2.成绩,0) as new_values from `user` t1 left join score t2 on t1.学生ID=t2.学生ID
      where 学期字段='学期值'
        order by new_values desc
      

  3.   

    实现相同的功能,可以直接用下面的 left join 来实现。select u.*
    from user u left join (select uid,score from score where 学期=所选的那个学期) b
    on u.uid=b.uid
    order by b.score