2012-03-28 38 views
1

我有一張學生成績表。學生可以多次參加考試,我們只關心最高分。PHP MySQL:從多個類別中取出最高值並寫入一個數組?

所以表看起來是這樣的:

UserID  CatID  Score 
20   5   60 
20   5   85 
20   5   80 
20   6   90 
20   7   80 
20   7   75 
20   7   90 
22   5   75 
22   5   85 

要根據一個用戶名變量,看起來像這樣找回一行:

UserID  Cat5  Cat6  Cat7 
20    85   90   90 

這裏是我使用至今作爲查詢:

SELECT score AS Score 
, catid 
FROM `quiz_result` 
WHERE userid=65 and catid=5 
ORDER BY score DESC 
LIMIT 0, 1 

不知道如何獲得其他類別在一行......想法?

謝謝!

回答

0

試試這片:

SELECT catID, MAX(score) FROM `quiz_result` 
GROUP BY catID; 

輸出並不像你的樣品完全相同,但它幾乎給了你所需要的。

編輯

輸出將是這樣的:

catID  MAX(score) 
Cat5  85 
Cat6  90 
Cat7  90 

讓其他列,只包括其在SELECT查詢名稱。

+0

謝謝!這給了我一個類別(我的查詢也是這樣) - 我需要獲得所有類別:/ – Gisto 2012-03-28 16:21:14

+0

@Gisto,它的輸出將類似於編輯後的帖子。 – hjpotter92 2012-03-28 16:23:05

+0

所以它!我在那裏有一個限制,所以我沒有看到其他人 - 謝謝! – Gisto 2012-03-28 16:43:02

0

試試這個:

SELECT CONCAT_WS(',', catID) AS catID, CONCAT_WS(',', MAX(score)) FROM `quiz_result` GROUP BY catID; 
+1

啊,那也行!對不起,看到@ hjpotter92的第一個。此外,第一次出現錯誤,我認爲如果其他人正在尋找,它應該是CONCAT_WS而不是WS_CONCAT。 – Gisto 2012-03-28 16:47:05

相關問題