Я бы хотел как-то объединить эти результаты MySQL 5.6. Идея состоит в том, чтобы получать данные из самых последних и самых старых строк каждого идентификатора. Значения времени / идентификатора пары уникальны.
Таблица:
| time | id | titulo | precio | vendidos |
+---------------------+----+----------+--------+----------+
| 2019-10-26 19:12:14 | 1 | apple_a | 2 | 10 |
| 2019-10-26 19:12:14 | 2 | pea | 3 | 7 |
| 2019-10-26 19:12:14 | 3 | orange_a | 1 | 4 |
| 2019-10-28 19:12:14 | 3 | orange_a | 2 | 12 |
| 2019-10-28 19:12:14 | 4 | banana | 5 | 7 |
| 2019-10-28 19:12:14 | 5 | peach | 9 | 1 |
| 2019-10-29 19:12:14 | 1 | apple_b | 2 | 12 |
| 2019-10-29 19:12:14 | 2 | pea | 3 | 9 |
| 2019-10-29 19:12:14 | 3 | orange_b | 2 | 19 |
| 2019-10-29 19:12:14 | 4 | banana | 6 | 14 |
| 2019-10-30 19:12:14 | 1 | apple_b | 3 | 17 |
| 2019-10-30 19:12:14 | 2 | pea | 3 | 11 |
С кодом:
-- Get latest rows for each id:
SELECT b.*
FROM (SELECT t.id, MAX(time) AS latest
FROM srapedpubs t GROUP BY id) a
INNER JOIN srapedpubs b ON b.id = a.id AND b.time = a.latest
ORDER BY id ASC
;
-- Get oldest rows for each id:
SELECT b.*
FROM (SELECT t.id, MIN(time) AS oldest
FROM srapedpubs t GROUP BY id) a
INNER JOIN srapedpubs b ON b.id = a.id AND b.time = a.oldest
ORDER BY id ASC
;
Результат:
| time | id | titulo | precio | vendidos |
|---------------------|----|----------|--------|----------|
| 2019-10-30 19:12:14 | 1 | apple_b | 3 | 17 |
| 2019-10-30 19:12:14 | 2 | pea | 3 | 11 |
| 2019-10-29 19:12:14 | 3 | orange_b | 2 | 19 |
| 2019-10-29 19:12:14 | 4 | banana | 6 | 14 |
| 2019-10-28 19:12:14 | 5 | peach | 9 | 1 |
| time | id | titulo | precio | vendidos |
|---------------------|----|----------|--------|----------|
| 2019-10-26 19:12:14 | 1 | apple_a | 2 | 10 |
| 2019-10-26 19:12:14 | 2 | pea | 3 | 7 |
| 2019-10-26 19:12:14 | 3 | orange_a | 1 | 4 |
| 2019-10-28 19:12:14 | 4 | banana | 5 | 7 |
| 2019-10-28 19:12:14 | 5 | peach | 9 | 1 |
SQL Fiddle:
http://sqlfiddle.com/#!9/a9fafc/1
Как можно объединить оба выбораполучить данные из самых старых и последних строк? Желательно пропустить самые старые и последние строки, которые совпадают (например, id 5, «персик»)
Желаемый результат:
| time | id | titulo | precio | vendidos | oldest_time | oldest_precio | oldest_vendidos |
|---------------------|----|----------|--------|----------|---------------------|---------------|-----------------|
| 2019-10-30 19:12:14 | 1 | apple_b | 3 | 17 | 2019-10-26 19:12:14 | 2 | 10 |
| 2019-10-30 19:12:14 | 2 | pea | 3 | 11 | 2019-10-26 19:12:14 | 3 | 7 |
| 2019-10-29 19:12:14 | 3 | orange_b | 2 | 19 | 2019-10-26 19:12:14 | 1 | 4 |
| 2019-10-29 19:12:14 | 4 | banana | 6 | 14 | 2019-10-28 19:12:14 | 5 | 7 |
Я не понимаю, какэто может быть сделаноЯ попробовал некоторые вещи, которые закончились с неправильными результатами. Так кто-нибудь здесь знает, как это сделать?