Как мога да използвам MAX и LIMIT заедно в MySQL

Имам таблица със следната структура:

ID | Цвят

1 | червено
2 | синьо
3 | жълт
8 | лилаво
10| зелен
.
.
.
100|жълт

Бих искал да мога да взема стойността на MAX ID за първите 5 реда.

Например, бих искал да направя нещо подобно: Изберете MAX(ID) от таблица LIMIT 5

Надявайки се, че това ще върне стойността 10

Но MySQL продължава да връща 100... все едно MySQL дори не вижда клаузата LIMIT.


person Community    schedule 19.07.2009    source източник


Отговори (4)


Звучи сякаш искате да изберете първите 5 записа (подредени по ID) и след това да получите най-високата стойност от тази група? Ако е така:

SELECT
    MAX(ID)
FROM
    ( 
         SELECT ID 
         FROM YourTable
         ORDER BY ID
         LIMIT 5
    ) as T1 
person gahooa    schedule 19.07.2009
comment
вероятно не е нужно да избирате * ; само изберете id трябва да е достатъчно? (Не съм сигурен, че е така, но може би избирането само на полето(ята), от което се нуждаете, може да намали необходимата памет -- което винаги е хубаво) - person Pascal MARTIN; 20.07.2009
comment
Да, това трябва да е SELECT ID - person gahooa; 22.07.2009
comment
Но това вътрешно създава нова таблица, когато просто се нуждаем от макс. Изкушавам се да кажа, че това е толкова бавно, колкото избирането на сортираните редове с LIMIT и изчисляването на максимума извън SQL. - person Jus12; 09.12.2016

Има по-добър начин да направите това от подизбор:

SELECT id FROM table LIMIT 4,1

Вземете един ред, но първо пропуснете 4. Добавете „подреждане по id“, ако това е таблицата MyISAM.

person kersjous    schedule 02.06.2011
comment
Това работи, ако знаете колко реда има. Ако превишите броя на редовете, заявката връща NULL. Имах нужда от това за групови цели, но максималната версия е по-подходяща в моя случай. - person binar; 07.02.2014
comment
хубаво! но няма да работи в случай, че има 4 вместо 5 записа - person Albert Tobac; 22.05.2018

Използвайте подизбор:

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

Това може да не е съвсем валиден SQL, но трябва да ви даде обща представа.

person lucasmo    schedule 19.07.2009
comment
Невалиден SQL. Имате нужда от псевдоним за всяка извлечена таблица + трябва да имате подреждане по, за да получите дефинирани резултати. - person gahooa; 19.07.2009

Ако имате таблица със следната структура

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 за всички стойности. С Най-Добри Пожелания.

person volgot    schedule 26.10.2017