Я пытаюсь сузить результаты существующего сложного запроса на основе условных совпадений для нескольких столбцов в возвращенном наборе данных.Я постараюсь максимально упростить данные здесь.
Предположим, что следующая структура таблицы представляет данные, которые уже был выбран моим существующим сложным запросом (здесь упорядочен по date
):
+----+-----------+------+------------+
| id | remote_id | type | date |
+----+-----------+------+------------+
| 1 | 1 | A | 2011-01-01 |
| 3 | 1 | A | 2011-01-07 |
| 5 | 1 | B | 2011-01-07 |
| 4 | 1 | A | 2011-05-01 |
+----+-----------+------+------------+
Мне нужно выбрать из этого набора данных на основе следующих критериев:
- Если пары
remote_id
и type
уникальны для набора, всегда возвращать строку - Если спаривание
remote_id
и type
является не уникальным для набора, выполните следующее действие: - Из наборов строк, для которых спаривание
remote_id
и type
не являются уникальными, возвращают только единственную строку, для которой date
равно наибольший и все еще меньше или равно сейчас.
Итак, если сегодня 2011-01-10
, я бы хотел, чтобы возвращаемый набор данных был:
+----+-----------+------+------------+
| id | remote_id | type | date |
+----+-----------+------+------------+
| 3 | 1 | A | 2011-01-07 |
| 5 | 1 | B | 2011-01-07 |
+----+-----------+------+------------+
Почему-то ябезуспешно, оборачиваясь вокруг этого.Я подозреваю, что ответ заключается в хорошем применении group by
, но я просто не могу понять это.Любая помощь с благодарностью!