У меня есть запрос, как это:SELECT DISTINCT ON из подзапроса
SELECT user_set, read, last_updated, user_id, pk_id
FROM interaction_log
WHERE user_id = 2002
ORDER BY read, last_updated, user_set
база данных используется в PostgreSQL (9.1) и требование что-то вроде этого:
- Упорядочение столбцы могут не меняться (упорядочивать по состоянию чтения, затем по последнему обновлению, а затем по user_set)
- Столбец «чтение» представляет собой целое число, которое может принимать значение только «1» или «0». last_updated - положительное целое число, а user_set - строка.
Столбец user_set должен быть уникальным. например: если есть 3 записей для user_set под названием 'дэвы', как показано ниже:
- user_set = "УБС", прочитать = 1, LAST_UPDATED = 10, user_id = 2002, pk_id = 1
- user_set = " Devs», чтение = 0, LAST_UPDATED = 30, идентификатор_пользователь = 2002, pk_id = 3
- user_set = "дэвы" читать = 0, LAST_UPDATED = 20, идентификатор_пользователь = 2002, pk_id = 2
Тогда вторая запись (с pk_id = 3) должна появиться наверху, и никто другой не должен появляться b потому что это было «read = 0», а затем последнее значение было 30 (выше 20).
SELECT DISTINCT ON (user_set) хочет, чтобы у меня был user_set в качестве первого порядка сортировки, который изменил бы порядок, и, следовательно, я не могу этого сделать.
Если я что-то вроде этого:
SELECT DISTINCT ON (user_set) user_set, read, last_updated, thread_id, user_id, id
FROM message_interaction_log
WHERE (user_set, read, last_updated, thread_id, user_id, id) IN
(SELECT user_set, read, last_updated, thread_id, user_id, id
FROM message_interaction_log
WHERE user_id = 14
ORDER BY read DESC, last_updated, user_set)
Тогда 'заказ по эффекту на «читать» невидим и делает «читать ASC» и «читать DESC» остается тем же самым.
Я пробовал делать все, что мог, и я терпел неудачу каждый раз. Любая помощь мне очень понравилась бы.
В чем заключалось такое требование? –
Я думаю, что ваш пост усечен. – MillaresRoo
Переименуйте столбец 'read'. Не используйте ** [зарезервированные ключевые слова] (http://www.postgresql.org/docs/8.1/static/sql-keywords-appendix.html) ** в качестве имен столбцов. –