Предположим, у меня есть столовый world(continent, country)
.
Как я могу отфильтровать эту таблицу, чтобы включить только continent
и country
из первых пяти стран на каждом континенте (в алфавитном порядке)? Если я хочу выбрать только первую страну по алфавиту, я просто делаю:
SELECT continent, country
FROM world x WHERE country = (
SELECT country
FROM world y
WHERE x.continent = y.continent
ORDER BY country asc
LIMIT 1
)
Но если я попытаюсь получить больше одной страны с
SELECT continent, country
FROM world x WHERE country in (
SELECT country
FROM world y
WHERE x.continent = y.continent
ORDER BY country asc
LIMIT 5
)
то возникает ошибка:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Каков альтернативный запрос, который я могу запустить?
Для каждой строки подсчитывайте, сколько стран находится в списке:
SELECT continent, country
FROM world x
WHERE 5 > (
SELECT count(*)
FROM world y
WHERE x.continent = y.continent
AND x.country > y.country
)