MySQL Min (), MAX () с использованием идентификаторов из другой таблицы

0

У меня есть две очень простые таблицы MySQL: Таблица1 со списком уникальных item_ids, а вторая Таблица2 с записями, использующими идентификаторы элементов из первой таблицы. Таблица2 содержит также дату, когда была сделана запись. Напомним, вот как выглядят таблицы:

Table1 столбцы: item_id < --- это уникальные идентификаторы

Table2 столбцы: item_id, item_title, time_stamp

Мне нужен запрос MySQL, который даст мне список с датой первой и последней записи для каждого item_id в Таблица2. Обязательно, чтобы Таблица2 будет выглядеть только для item_id в таблице1, потому что Таблица2 содержит item_ids, которые не содержатся в Таблица1. Таким образом, я использую Table1 только для сортировки на основе item_id. Ваша помощь с благодарностью.

Теги:
aggregate-functions

2 ответа

3
Лучший ответ
SELECT  t2.item_id, MIN(t2.time_stamp), MAX(t2.time_stamp)
FROM    table2 t2
JOIN    table1 t1
ON      t1.item_id = t2.item_id
GROUP BY
        t1.item_id
ORDER BY
        t1.ordering_column

В MySQL вы можете использовать негруппированные и неагрегатные выражения в SELECT и ORDER BY.

  • 0
    Вероятно, хотите отредактировать и добавить ключ группы в список выбора, чтобы дать контекст датам
  • 0
    не являются агрегированными выражениями MAX () и MIN ()?
Показать ещё 3 комментария
0
select item_id, maxts.ts, mints.ts
from (select item_id, max(time_stamp) as ts from Table2 group by item_id) maxts
join (select item_id, min(time_stamp) from Table2 group by item_id) mints on maxts.item_id=mints.item_id
join Table1.item_id t1 on t1.item_id=mints.item_id;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню