Как убрать первые строки для каждой группы (mysql)?

Есть таблица с данными клиентов (клиент, тариф и дата начала использования тарифа).

введите сюда описание изображения

Нужно написать запрос (СУБД mysql), чтобы исключить первые строки для каждого клиента.

Результат должен выглядеть так.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Fat-Zer

Можно с помощью коррелированного подзапроса выбрать:

SELECT * FROM tbl AS t
WHERE `date`>(
     SELECT MIN(i.`date`) FROM tbl AS i 
     WHERE i.client = t.client
     GROUP BY i.`client`
);

Или с помощью JOIN'а:

SELECT t.* FROM tbl AS t
JOIN (SELECT client, MIN(`date`) AS m_date FROM tbl GROUP BY client) AS m
  ON t.client=m.client
WHERE t.`date`>m_date;

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

→ Ссылка