Допустим, у меня есть таблица заказов с 20 столбцами.Меня интересуют только первые 4 столбца: id, Department_id, region_id, datetime, где id - это идентификатор клиента, а datetime - время, когда клиент разместил заказ.Другие столбцы более специфичны для деталей продукта (например, product_id), поэтому в данном заказе вы можете иметь несколько строк.Я изо всех сил пытаюсь написать запрос, чтобы получить для каждого клиента самый ранний отдел и регион, поскольку один и тот же клиент может иметь несколько комбинаций Department_id и region_id.
SELECT a.*
FROM (
SELECT id,
department_id,
region_id,
min(DATETIME) AS ts
FROM orders
GROUP BY id,
department_id,
region_id
) a
INNER JOIN (
SELECT id,
min(DATETIME) AS ts
FROM orders
GROUP BY id
) b
ON a.id = b.id
AND a.ts = b.ts
Это работает, но это не таккажется очень эффективным и плохо написанным.Есть ли лучший способ написать это?Сама таблица довольно большая, поэтому этот запрос медленный.