Я собираюсь предположить, что у вас есть какой-то идентификатор, который указывает, кто «первый». Столбец даты или столбец идентификаторов или что-то в этом роде.
В моем примере я сделал это с помощью столбца идентификатора order_id.
CREATE TABLE products (
order_id MEDIUMINT NOT NULL AUTO_INCREMENT,
prod char(2),
cust char(2),
qty int,
PRIMARY KEY (order_id)
);
INSERT INTO products (prod, cust, qty) VALUES
('p1', 'c1', 5),
('p1', 'c2', 10),
('p2', 'c1', 2),
('p3', 'c2', 8);
И затем, чтобы получить ваши значения, запустите:
select p1.prod, p1.cust, p1.qty
from products p1
where not exists (select * from products p2
where p1.prod = p2.prod
and p2.order_id < p1.order_id)
где в каждой строке вы проверяете, есть ли другие клиенты, которые заказали его раньше, чем вы. Если есть более ранний заказ, не перечисляйте эту строку. (Таким образом, not exists
)
Это синтаксис mysql, кстати, на который вы говорите, что переносите. (Эксперты по доступу должны будут отредактировать это соответствующим образом.)
Теперь, если у вас нет столбца, определяющего последовательность ввода заказов, вам нужен один. Любые схемы, которые основаны на неявном row_numbering, основанном на порядке вставки, рано или поздно распадутся, поскольку «первая строка» не гарантированно останется прежней.