Если ваша версия MySQL <8.0 </strong>, вы можете имитировать функциональность RowNumber
, используя переменные сеанса . Для достижения функциональности Partition By
, основанной на группировке, мы будем использовать две переменные сеанса, одну для номера строки, а другую для хранения старого City
, чтобы сравнить его с текущим, и увеличить его на 1, если он принадлежит одному City
группа, иначе сброс на 1.
Следующий код получит ваши первые две записи . Вы можете легко изменить его, чтобы получить первые n записей, изменив 2 на n в запросе.
SET @row_number = 0;
SET @city_var = '';
SELECT inner_nest.Id,
inner_nest.City,
inner_nest.Amount
FROM (
SELECT
@row_number:=CASE
WHEN @city_var = City THEN @row_number + 1
ELSE 1
END AS num,
Id,
@city_var:=City as City,
Amount
FROM
table_name
ORDER BY
City) AS inner_nest
WHERE inner_nest.num <= 2
ORDER BY inner_nest.Id ASC
**
**