2010-03-11 2 views
0

У меня есть таблица следующимMySQL Hibernate сортировать по 2 колонки

Таблица элемента {
ID - первичный ключ
контента - Строка
published_date - Когда содержание было опубликовано
create_date - Когда эта запись базы данных был создан

Каждый час (или указанный промежуток времени) Я запускаю процесс обновления этой таблицы данными из разных источников (сайтов). Я хочу показать результаты в соответствии со следующими правилами.
1. Записи, созданные при каждом запуске процесса, должны быть сгруппированы вместе. Таким образом, записи из второго запуска процесса всегда будут после записей первого запуска процесса, даже если опубликованный_данец записи из первого запуска после опубликованной_даты записи из второго прогона.
2. В рамках группировки за прогон записи отсортированы по опубликованному_дату
3. Другое ограничение состоит в том, что я предпочитаю, чтобы данные из одного источника не были сгруппированы. Если я сделаю сортировку по create_date, publish_date, я получу данные из источника a, данные из источника b и т. Д. Я предпочитаю, чтобы данные в течение каждого часа были смешаны для лучшего представления

Если я добавлю столбец к этому таблицу и хранить счетчик, который увеличивается каждый раз при запуске процесса, можно создать запрос для сортировки сначала по счетчику, а затем по publish_dt. Есть ли способ сделать это без добавления поля? Я использую Hibernate над MySQL.

например.
час 1 (прогон 1)
4 строки, собранные с сайта а (строки 1-4)
3 строки, собранные с сайта Ь (строки 5-7)

час 2 (бег 2)
2 строки собранные с сайта а (строки 8-9)
3 строк, собранные с сайта B (строки 10-12)
...

После каждого запуска, новые записи добавляются в базу данных с каждого сайта. Дата создания - это время, когда запись была создана в базе данных. Опубликованная дата является частью содержимого и считывается из внешнего источника.

Когда результаты отображаются, я хотел бы, чтобы строки были сгруппированы в зависимости от того, в какой час они были опубликованы. Таким образом, строки 1-7 будут отображаться перед строками 8-12. В каждой почасовой группировке я хотел бы отсортировать результаты по опубликованной дате (timestamp). Это необходимо, чтобы сообщения со всех сайтов, собранных в этот час, не были сгруппированы вместе, а были смешаны друг с другом.

+0

Вы можете не только упорядочить по create_date тогда published_date? –

+0

@ Kevin Я забыл включить свое третье ограничение, спасибо за указание на это. – smahesh

+0

Я не уверен, что понимаю все ваши исправления. Сможете ли вы дать краткий пример таблицы и как вы хотите, чтобы данные из таблицы примеров отображались? –

ответ

1

Если добавить счетчик, вы определенно можете заказать детали счетчика первого и затем Дата публикации:

from Item item order by item.counter desc, item.publishedDate 
+0

Конечно, но я хотел посмотреть, есть ли способ сделать это, не добавляя лишнюю колонку. – smahesh

Смежные вопросы