У меня есть следующие столбцы:
| order_id | client_id | order_timestamp | buyer_id |
(все INT)
Все началось с простой задачи "Покажите мне покупателя последнего заказа для каждого клиента", так что в основном
SELECT
client_id,
max(order_timestamp),
buyer_id
FROM table t
GROUP BY client_id;
, если GROUP BY будет работать так, как можно было бы ожидать / wi sh. Я знаю, что это типичная проблема, но я никогда не видел такого случая, в частности, когда вам нужно другое значение в дополнение к тому, по которому вы группируете. Я думаю, что использование оконных функций могло бы помочь, но мы используем MariaDB 10.0, так что это не совсем вариант. Я пробовал разные подвыборы и объединения, но это всегда заканчивается проблемой, заключающейся в том, что я не могу использовать order_id для присоединения, так как мне приходится группировать по client_id. Мне также пришло в голову присоединиться, используя client_id AND order_timestamp, но эта комбинация не является уникальной в таблице, поскольку можно иметь заказы с одинаковой (Unix) отметкой времени для одной комбинации клиента или клиента / покупателя (так что да , это был бы крайний случай, мне понадобился бы покупатель заказа с более высоким порядковым номером, но это проблема для другого дня, я думаю).
Если таблица была заполнена как
| order_id | client_id | order_timestamp | buyer_id |
| 1 | 123 | 9876543 | 2 |
| 2 | 123 | 9876654 | 3 |
| 3 | 234 | 9945634 | 2 |
| 4 | 234 | 9735534 | 1 |
Я хотел бы получить
| client_id | buyer_id |
------------|----------|
| 123 | 3 |
| 234 | 2 |
Надеюсь, кто-нибудь может мне помочь, поэтому я могу go спать спокойно сегодня вечером.