У меня есть довольно сложное утверждение select. Тем не менее, у меня есть столбец, скажем, дата, и столбец с названием title, тогда я хочу счетчик (он увеличивается, если дата не равна предыдущей дате), который подсчитывает каждый день в наборе результатов, когда счетчик достигает 10, я хочу оператор SQL вернуть набор результатов для первых 10 дат.
Даты - это всего лишь аналогия моей проблемы; Важной частью является мой счетчик.
EDIT:
Вот моя настоящая проблема:
Я хочу получить 10 первых разговоров вместе с их последним сообщением и временем. Я хочу, чтобы sql тоже получал приглашенных в беседе (я делаю это, добавляя строки с одинаковым разговорным идентификатором latestMessage и временем вместе с различными значениями profileId. Позднее я группирую приглашенных для каждого разговора в коде JAVA). У меня есть одна таблица под названием dialog_invited и другая таблица под названием сообщения разговора. В таблице journal_messages у меня есть такие столбцы, как dialogId, profileId, messageBody, timeStamp и т. Д. А в таблице journal_invited только столбец dialogId и profileId.
SELECT M1.conversationId, M1.profileId, profiles.profileMiniature, profiles.firstName, profiles.lastName, M2.lastMessageTime, count(DISTINCT M2.lastMessageTime) AS nb, M3.messageBody AS lastMessage " +
"FROM conversation_invited AS M1 " +
"INNER JOIN ( " +
" SELECT conversationId, " +
" max(timeStamp) AS lastMessageTime" +
" FROM conversation_messages " +
" WHERE conversationId in ( " +
" SELECT conversationId" +
" FROM conversation_invited " +
" WHERE profileId = ? " +
" ) " +
" GROUP BY conversationId " +
" ) AS M2 " +
"ON M1.conversationId = M2.conversationId " +
"LEFT JOIN conversation_messages AS M3 " +
"ON M2.lastMessageTime = M3.timeStamp " +
"INNER JOIN profiles " +
"ON profiles.profileId = M1.profileId " +
"WHERE M1.profileId <> ? " +
// WHICH COLUMN SHALL I GROUP WITH?
"HAVING nb < 10 " +
"ORDER BY M2.lastMessageTime DESC ";
UPDATE:
Я удалил оператор группы в своем запросе. У меня есть одна проблема выше, и это ни одно из значений в столбцах не отличаются друг от друга. Как я уже сказал:
хочу получить 10 первых разговоров
вместе с их последним сообщением и
время. Я хочу, чтобы SQL для получения
приглашен в разговор тоже (я делаю
это путем добавления строк с одинаковыми
Разговор был последним сообщением и временем
наряду с различными значениями
ProfileID. Я группирую приглашенных к каждому
разговор в коде JAVA позже)
Но profileId также не различен (я имею в виду разные в каждом разговоре, но пользователю может быть предложено несколько бесед). Вопрос в том, как можно легко добавить столбец, который всегда имеет разные значения? Чтобы я мог сгруппировать счетчик?