Как я могу использовать MAX и LIMIT вместе в MySQL - PullRequest
6 голосов
/ 19 июля 2009

У меня есть таблица со следующей структурой:

ID | Цвет

1 | красный
2 | синий
3 | желтый
8 | фиолетовый
10 | зеленый
.
.
.
100 | желтый

Я бы хотел иметь возможность получить значение MAX ID для первых 5 строк.

Например, я хотел бы сделать что-то вроде этого: Выберите MAX (ID) из таблицы LIMIT 5

Надеясь, что это вернет значение 10

Но MySQL продолжает возвращать 100 ... похоже, что MySQL даже не видит предложение LIMIT.

Ответы [ 4 ]

20 голосов
/ 19 июля 2009

Похоже, вы хотите выбрать 5 лучших записей (упорядоченных по идентификатору), а затем получить наибольшее значение этой группы? Если так:

SELECT
    MAX(ID)
FROM
    ( 
         SELECT ID 
         FROM YourTable
         ORDER BY ID
         LIMIT 5
    ) as T1 
10 голосов
/ 02 июня 2011

Есть лучший способ сделать это, чем выбрать:

SELECT id FROM table LIMIT 4,1

Получите один ряд, но сначала пропустите 4. Добавьте 'order by id', если это таблица MyISAM.

1 голос
/ 19 июля 2009

Использовать подвыбор:

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

Возможно, это не совсем правильный SQL, но это должно дать вам общее представление.

0 голосов
/ 26 октября 2017

Если у вас есть таблица со следующей структурой

ID | Color

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

Значение MAX ID для первых 5 (AUTO_INCREMENT?) Значений равно 5. Кстати, значение MAX ID для первых 6 значений равно 6. И 100 для всех значений. С наилучшими пожеланиями.

...