次の構造のテーブルがあります。
ID | 色
1 | 赤
2| ブルー
3| イエロー
8| パープル
10| 緑
。
。
。
100|黄色
最初の5行のMAXID値を取得できるようにしたいと思います。
たとえば、次のようにします。テーブルLIMIT 5からMAX(ID)を選択します。
これが値10を返すことを願っています
しかし、MySQLは100を返し続けます...MySQLのようにLIMIT句さえ見ません。
上位5つのレコード(ID順に)を選択してから、そのグループの最高値を取得したいようです。もしそうなら:
SELECT
MAX(ID)
FROM
(
SELECT ID
FROM YourTable
ORDER BY ID
LIMIT 5
) as T1
これを行うには、副選択よりも良い方法があります。
SELECT id FROM table LIMIT 4,1
1行を取得しますが、最初に4をスキップします。これがMyISAMテーブルの場合は、「IDによる順序」を追加します。
副選択を使用します。
SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5);
それは完全に有効なSQLではないかもしれませんが、それはあなたに一般的な考えを与えるはずです。
次の構造のテーブルがある場合
ID | Color
1 | red
2 | blue
3 | yellow
8 | purple
10| green
.
.
.
100|yellow
最初の5つの(AUTO_INCREMENT?)値のMAX ID値は5です。ところで、最初の6つの値のMAX ID値は6です。また、すべての値が100です。よろしくお願いします。