Показать строку на mysql в этом случае - PullRequest
0 голосов
/ 19 апреля 2020

У меня в таблице есть строки, подобные этой

+----+-------+--------+--------------+---------------------+
| id | cid   | number | value        | date                |
+----+-------+--------+--------------+---------------------+
|  2 |     1 |     55 | two to one   | 2020-04-19 11:25:52 |
|  2 |     9 |     56 | two to nine  | 2020-04-19 11:26:04 |
|  1 |     2 |     57 | one to two   | 2020-04-19 11:27:02 |
|  9 |     2 |     58 | nine to two  | 2020-04-19 11:28:01 |
+----+-------+--------+--------------+---------------------+

Что такое код sql, который будет отображаться следующим образом

+----+-------+--------+--------------+---------------------+
| id | cid   | number | value        | date                |
+----+-------+--------+--------------+---------------------+
|  1 |     2 |     57 | one to two   | 2020-04-19 11:27:02 |
|  9 |     2 |     58 | nine to two  | 2020-04-19 11:28:01 |
+----+-------+--------+--------------+---------------------+

Это означает, что просто покажите последнюю строку и сделайте id с cid такое же, как id=1-cid=2 то же самое с id=2-cid=1. Кто-нибудь, пожалуйста, помогите, и я надеюсь, что вы знаете, что я имею в виду. Большое вам спасибо

1 Ответ

0 голосов
/ 19 апреля 2020

Вы можете использовать производную таблицу для создания списка последних значений даты для каждой комбинации значений id и cid, используя LEAST и GREATEST сопоставить (например) (1, 2) с (2, 1). Затем можно JOIN отредактировать к исходной таблице, чтобы получить данные на самую последнюю дату:

SELECT t1.id, t1.cid, t1.number, t1.value, t1.date
FROM data t1
JOIN (
  SELECT LEAST(id, cid) AS l_id, 
         GREATEST(id, cid) AS g_id,
         MAX(date) AS max_date
  FROM data
  GROUP BY l_id, g_id
) t2 ON t2.max_date = t1.date
    AND (t2.l_id = t1.id AND t2.g_id = t1.cid OR
         t2.l_id = t1.cid AND t2.g_id = t1.id)

Вывод (для данных образца):

id  cid     number  value           date
1   2       57      one to two      2020-04-19T11:27:02Z
9   2       58      nine to two     2020-04-19T11:28:01Z

Демонстрация на SQLFiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...