У меня есть таблица, которая состоит из множества столбцов, но релевантны только три:
id - INT
species - VARCHAR(5)
date - DATE
Я хочу найти следующее: Для каждого вида дайте мне идентификатор с самой низкой датой
Пример данных для одного вида:
id | species | date
----------------------------
123 | 03100 | 2007-04-23
----------------------------
324 | 03100 | 2005-05-26
Я пытался сделать GROUP BY ORDER
SELECT * FROM `table` GROUP BY species ORDER BY `date` ASC;
RESULT:
id | species | date
----------------------------
123 | 03100 | 2007-04-23
Я пытался упорядочить в дополнительном выборе перед группировкой:
SELECT
id, species, `date`
FROM
(SELECT
*
FROM
`table`
ORDER BY `date` ASC) sub
GROUP BY species;
RESULT:
id | species | date
----------------------------
123 | 03100 | 2007-04-23
Результат должен быть
id | species | date
----------------------------
324 | 03100 | 2005-05-26
, потому что дата является самой ранней для этого вида.
У нас есть около 1100 различных видов, поэтому я бы предпочел, если бы это моглосделать один запрос вместо 1100 запросов, по одному для каждого вида.
ОБНОВЛЕНИЕ: заранее извиняюсь, ваши предложения хороши, но мне трудно их реализовать, так как моя модель данных немного большесложнее, чем демо, которое я выложил:
TABLE: obs
------------------
id | INT
species | VARCHAR
user_id | INT
trip_id | INT
TABLE: trips
------------------
trip_id | INT
dato | DATE
На самом деле, мне нужно объединить obs
и trips
вместе, чтобы получить дату, а затем я должен найти идентификатор, вид и дату дляконкретные user_id
Я надеюсь, что вы все еще можете помочья: -)
С уважением, Андерс