Stack Overflow на русском Asked by maxdembovsky on March 2, 2021
Есть таблица с данными клиентов (клиент, тариф и дата начала использования тарифа).
Нужно написать запрос (СУБД mysql), чтобы исключить первые строки для каждого клиента.
Результат должен выглядеть так.
Можно с помощью коррелированного подзапроса выбрать:
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;
По идее оба варианта должны быть одинаковы по сложности, но для уверенности лучше сверится с планом. Возможно, есть какой-то более оптимальный способ, но что-то мне на ум пока ничего не приходит.
Correct answer by Fat-Zer on March 2, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP