2012-07-24 47 views
0

我有一個表sometable的最高值:MySQL的:獲取指定名稱

name | math | history | status 
----------------------------- 
jon | 80 | 90  | 1 
alex | 90 | 70  | 1 
alex | 87 | 80  | 1 
jon | 78 | 80  | 0 
alex | 90 | 60  | 1 
jon | 30 | 100 | 0 
emile| 99 | 89  | 0 

我想做的事就是讓一排名稱=亞歷克斯,狀態= 1,並有數學的最大值,然後對滿足的行進行歷史記錄。因此,其結果將是

alex | 90 | 70  | 1 

我嘗試類似的代碼:

select * from sometable where (name=$name and status=1) order by math DESC, history DESC 

我得到了我所期望的,因爲我可以得到第一排只有mysql_fetch_array的。 但想象一下mysql_fetch數組中有多少行。

是的,我的心不是代碼假的,但還不夠「成熟的」,因爲它提取大量行的,任何人都可以給一個解決方案嗎? 謝謝。 ^^

+0

什麼是「*想象mysql_fetch數組*行多少」是什麼意思? – eggyal 2012-07-24 08:19:36

+0

是的,我把查詢的結果讀入一個mysql_fetch_array(即時通訊使用php); 在上面的示例中,只有3行,但在真實數據庫中,它可能佔用很多行。 – user1545296 2012-07-24 08:28:18

回答

1

只要你只需要一個行 - 使用LIMIT 1條款:

SELECT * 
    FROM tblname 
    WHERE name = 'alex' 
    AND status = 1 
ORDER BY math DESC 
    LIMIT 1 
+0

謝謝,^^。對不起,因爲忘了它。 順便說一句,它必須是ORDER BY數學DESC,歷史DESC極限1 – user1545296 2012-07-24 08:21:03