0

私はいくつかのテーブルを持っています:

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 配列の行がどれだけあるか想像してみてください。

はい、私のコードは偽ではありませんが、多くの行をフェッチするため、「洗練された」ものではありません。誰か解決策を教えてください。ありがとう。^^

4

1 に答える 1

1

必要な行が 1 つだけである限り、LIMIT 1句を使用します。

  SELECT *
    FROM tblname
   WHERE name = 'alex'
     AND status = 1
ORDER BY math DESC
   LIMIT 1
于 2012-07-24T08:17:26.260 に答える