Как убрать первые строки для каждой группы (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;
По идее оба варианта должны быть одинаковы по сложности, но для уверенности лучше сверится с планом. Возможно, есть какой-то более оптимальный способ, но что-то мне на ум пока ничего не приходит.

