2013-07-11 15 views
0

表:MAST_CAT_HS如何在MySQL中選擇多個相同課程的最高分數?

EMPLID | CONV_GRADE_OFF | MAST_CAT


1 90 CHEM

1 90 PHSC

1 75 MATH

1 95 MATH

1 50 ENGL

1 90 MATH

1 90 CHEM

1 90 PHSC

1 65 BUS

2 90弊

2 80 MATH

想要得到的結果是這樣的:

EMPLID | CONV_GRADE_OFF | MAST_CAT


1 90 CHEM

1 90 PHSC

1 95 MATH

1 50 ENGL

1 65 BUS

2 90 ENGL

2 80 MATH

不幸的是,我們不能在MAST_CAT列=任何假設( 這裏是我的query.It不相同的課程和同分多行合併成 單列。 我的做法是這樣的:

SELECT sr1.EMPLID, sr1.CONV_GRADE_OFF, sr1.MAST_CAT 
FROM MAST_CAT_HS sr1 
LEFT JOIN MAST_CAT_HS sr2 
    ON sr1.EMPLID = sr2.EMPLID 
AND sr1.MAST_CAT = sr2.MAST_CAT 
AND sr1.CONV_GRADE_OFF < sr2.CONV_GRADE_OFF 
WHERE sr2.EMPLID IS NULL 
+0

這將是我們更容易幫助你,如果你設置了[SQL小提琴](http://sqlfiddle.com/) –

+0

http://stackoverflow.com/questions/2615697/mysql-biggest-value-from-two-fields ---這也許? – Ariane

+0

如果在SELECT之後添加了'DISTINCT'關鍵字,或者您在'WHERE'子句後面添加了'GROUP BY sr1.EMPLID,sr1.CONV_GRADE_OFF,sr1.MAST_CAT',那麼您的查詢將返回指定的結果集。 – spencer7593

回答

2
SELECT emplid, MAX(conv_grade_off), MAST_CAT 
FROM MAST_CAT_HS 
GROUP by elplid, mast_cat 

這組由IP和mast_cat並選擇分組的行的最大比分

+0

它的工作原理!非常簡單和直接=)非常感謝你!@ user1281385 – user2574316

相關問題