------------------------- | ID | RID | DATE | // TABLE A ------------------------- | 1 | 1 | 2015-01-01 | // 1st edition | 2 | 2 | 2015-01-01 | // 1st edition | 3 | 1 | 2015-02-01 | // 2nd edition | 4 | 4 | 2015-01-01 | // 1st edition | 5 | 1 | 2015-05-01 | // 3rd edition | 6 | 6 | 2015-01-01 | // 1st edition | 7 | 6 | 2015-01-10 | // 3rd edition | 8 | 6 | 2015-01-12 | // 4th edition | 9 | 6 | 2015-01-02 | // 2nd edition -------------------------
Таблица A состоит из записей, описывающих «файловые издания». До сих пор, я был в состоянии произвести ЗЕЬЕСТ, который будет выбрать из последнее издание с этим:Выбор последней редакции на конкретную дату
SELECT `t1`.`id` AS `id`, `t1`.`rid` AS `rid`, `t1`.`date` AS `date` FROM `table_a` `t1` WHERE (`t1`.`date` = ( SELECT MAX(`t2`.`date`) FROM `table_a` `t2` WHERE (`t2`.`rid` = `t1`.`rid`) ))
Что дает мне что-то вроде этого:
------------------------- | ID | RID | DATE | // TABLE B ------------------------- | 2 | 2 | 2015-01-01 | // 1st edition | 4 | 4 | 2015-01-01 | // 1st edition | 5 | 1 | 2015-05-01 | // 3rd edition | 8 | 6 | 2015-01-12 | // 4th edition -------------------------
Но мой вопрос , как настроить инструкцию SELECT, чтобы я получал все последние выпуски на определенную дату? например, скажем, I хотел найти последнюю версию с 2015-01-11? Я хотел бы получить результат, аналогичную таблицу C:
------------------------- | ID | RID | DATE | // TABLE C ------------------------- | 1 | 1 | 2015-01-01 | // 1st edition | 2 | 2 | 2015-01-01 | // 1st edition | 4 | 4 | 2015-01-01 | // 1st edition | 7 | 6 | 2015-01-10 | // 3rd edition -------------------------
Если есть решение уже там, мои извинения заранее, но я попытался найти с помощью этих ключевых слов/фраз: «MySQL выбрать последнее издание как от даты "и нашли очень мало помощи до сих пор ...
Также я понимаю, что я могу переусердствовать в этом, и это может быть очень простая настройка, например, возможно, изменение SELECT MAX или добавление другого условия на второе WHERE пункт.
Благодаря
UPDATE: Благодаря Musa, я должен думать об этом в шагах; другой метод. На первом этапе необходимо выбрать все даты: < = 2015-01-11. Второй шаг - отфильтровать MAX (дата), где ID = RID (т. Е. Последнее издание). Что касается слияния двух операторов SELECT, с которыми я сталкиваюсь.
, но в таблице C вы выбираете новейшие издания –
различие между таблицами B и C; если «по состоянию на 2015-01-11» было «по состоянию на 2015-01-12» вместо этого, оно выдавало бы ID 8, а не ID 7 ... – Nick
, чтобы вы хотели использовать более старое издание? –