SELECT s.*, a.s_score AS score_01, b.s_score AS score_02 FROM score a, score b, student s WHERE a.s_id = b.s_id AND a.c_id ='01' AND b.c_id ='02' AND a.s_score < b.s_score AND s.s_id = a.s_id;
第二种思路:长表变宽表
1 2 3 4 5 6 7 8 9 10 11 12 13
SELECT stu.*,sc.score_01,sc.score_02 FROM student stu INNERJOIN (SELECT sc.s_id, max( CASEWHEN sc.c_id ='01'THEN s_score END ) AS score_01, max( CASEWHEN sc.c_id ='02'THEN s_score END ) AS score_02, max( CASEWHEN sc.c_id ='03'THEN s_score END ) AS score_03 FROM score sc GROUPBY s_id) sc ON stu.s_id=sc.s_id AND sc.score_01 < sc.score_02