В Spanner у меня есть следующий запрос;
SELECT *
FROM Objects
WHERE EntityType = 0
GROUP BY EntityId
ORDER BY CreatedAt DESC
LIMIT 5
Этот запрос возвращает только 5 элементов в ответе. Но я не хочу 5 пунктов в результате. Я хотел получить 5 групп, созданных на основе EntityId. Итак, я хочу получить 5 групп под EntityId, чтобы иметь возможность разбивать их на страницы.
Предположим, что у меня есть следующая таблица: ;
Существует бесконечное количество EntityID, и в каждом EntityId будет различное количество строк.
У нас есть:
4 строки для EntityId 1, 3 строки для EntityId 2 и 1 строка для EntityId 3
В моем результате я хочу получить все строки для каждого EntityId сгруппированным образом. Итак, вот мои требования:
1 - он должен быть сгруппирован по EntityId
2 - он должен содержать все строки для созданных на EntityId в каждой группе
3 - я должен иметь возможность ограничить количество групп, скажем, 10 групп
4 - я должен иметь возможность разбивать EntityId на страницы
5 - я должен иметь возможность OrderBy EntityId
Он возвращается в результате, как следующая схема для меня:
Основываясь на вашей таблице результатов, вы имеете в виду просто выбрать EntityIds и заказать их? Если нет, можете ли вы обновить свою таблицу результатов, чтобы показать фактический результат, которого вы хотите достичь?
@NickW готово, сэр! Действительно, я хочу весь ряд. EntityId — это то, по чему я хочу их сгруппировать. Я хочу сгруппировать их по EntityId, и мне нужно 10 групп, независимо от того, сколько строк они содержат.


Что-то вроде этого должно работать:
with EntList as (
SELECT DISTINCT EntityId
FROM Objects
LIMIT 10
)
SELECT O.*
FROM EntList E
INNER JOIN Objects O on E.EntityId = O.EntityId
ORDER BY O.EntityId
Пожалуйста, обновите свой вопрос с некоторыми примерами данных и результатом, которого вы хотите достичь на основе этих данных.