SELECT u.id,
'Shift' AS which,
se.created_at
FROM users AS u
JOIN schedule_elements AS se ON se.owner_id = u.id
UNION ALL
(SELECT u.id,
'Like' AS which,
ll.created_at
FROM users AS u
JOIN likes AS ll ON ll.owner_id = u.id
UNION
SELECT u.id,
'Comment' AS which,
cm.created_at
FROM users AS u
JOIN comments AS cm ON cm.owner_id = u.id)
ORDER BY ID DESC , created_at DESC
The output looks like:
id, which, created_at
555, shift, <date>
555, shift, <date>
555, comment, <date>
555, shift, <date>
555, like, <date>
333, shift, <date>
333, shift, <date>
333, comment, <date>
333, shift, <date>
111, like, <date>
111, shift, <date>
111, shift, <date>
Выход имеет 5 записей для идентификатора 555 и 4 для 333. Я хочу отфильтровать этот запрос, чтобы у меня были только верхние 3 записи для 555, верхняя 3 для 333, и т.д ..Postgresql предельная колонка до 3 за значение
Похоже, что этот запрос не будет работать - вы можете использовать LIMIT только для всего утверждения (все 3 объединения). И даже он работает, он отображает 3 элемента на каждый SELECT не для всех. –
Похоже, что здесь работает http://stackoverflow.com/questions/1415328/combining-union-and-limit-operations-in-mysql-query – pottedmeat7
, что является совершенно другой задачей. Для каждой другой компании требуется 10 записей. Здесь - 3 последних операции над пользователем + их комментарии и отзывы. –