2009-07-19 13 views
6

私は以下の構造のテーブルを持っています:MySQLでMAXとLIMITを一緒に使用するには

ID |色

1 |赤
2 |青
3 |イエロー
8 |紫
10 |緑色



100 |イエロー

最初の5行のMAX ID値を取得したいと考えています。

例えば、私はそうのような何かをしたいと思います: 選択MAX表のLIMIT値を10

を返しますこれを期待して5

から(ID)しかし、MySQLは100を返す続け...そのようなMySQLはLIMIT節も見ていません。

SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5); 

非常に有効なSQLではないかもしれませんが、それはあなたの一般的なアイデアを与える必要があります。

答えて

19

トップ5のレコード(ID順)を選択してそのグループの最高値を取得するように思えますか?その場合:

SELECT 
    MAX(ID) 
FROM 
    ( 
     SELECT ID 
     FROM YourTable 
     ORDER BY ID 
     LIMIT 5 
    ) as T1 
+1

"選択*"する必要はないでしょう。 "select id"だけで十分でしょうか?あなたが必要とするフィールドだけを選択すれば、必要なメモリを減らすことができます。これはいつも素敵です。 –

+0

Works完璧に!!本当にありがとう。 –

+0

はい、これは 'SELECT ID'でなければなりません – gahooa

1

は、副選択を使用してください。

+4

無効なSQLです。派生テーブルごとにエイリアスが必要です+あなたは「定義済み」の結果を得るためにオーダーバイを持っている必要があります。 – gahooa

9

副選択よりも、これを行うには良い方法があります:これはMyISAMテーブルであれば

SELECT id FROM table LIMIT 4,1 

は、1行を取得しますが、最初の4を飛ばし.. は、「ID順」を追加します。

+2

これは私のために働く。私はこの答えが過小評価されていると思います。 –

+1

これは、そこにいくつの行があるかを知っている場合に機能します。行数を超えると、クエリはNULLを返します。私はバッチの目的のためにこれを必要としましたが、私の場合はmaxバージョンがより適しています。 – talereader

0

次構造

ID | Color 

1 | red 
2 | blue 
3 | yellow 
8 | purple 
10| green 
. 
. 
. 
100|yellow 

持つテーブルを持っている場合は最初の5(AUTO_INCREMENT?)値の最大ID値がところで5 あり、第6の値の最大ID値は6でありますすべての値は100です。 よろしくお願いいたします。

関連する問題