2015-10-09 2 views
0

У меня есть этот запрос, и это возвращает два столбца, которые почти то же самое, за исключением двух столбцов это выглядит следующим образом:Как выбрать последнюю дату между двумя записями в MySQL

вход 1: LOTNUM = TAOM7U034N, OPCODE = 8385, DATEADDED = 2015-09-04 05:19:00, DATERELEASED = 2015-09-09 15:41:00

Ввод 2: LOTNUM = TAOM7U034N, OPCODE = 8385, DATEADDED = 2015-09-28 16 : 51: 00, DATERELEASED = 2015-10-01 14:34:00

SELECT 
    LOTNUM, 
    OPCODE, 
    DATERELEASED 
FROM 
    HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i 
WHERE 
    LOTNUM IN('TAOM7U034N') 
AND DATEADDED =(
    SELECT 
     MAX(DATEADDED) 
    FROM 
     HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS x 
    WHERE 
     x.LOTNUM = i.LOTNUM 
    AND x.OPCODE = i.OPCODE 
) 

Этот запрос в порядке и возвращает 2-й вход и ю в том, что мне нужно. Но этот запрос занимает 15 секунд.

Я пытался модифицировать так:

SELECT 
    LOTNUM, 
    OPCODE, 
    DATERELEASED 
FROM 
    HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i 
WHERE 
    LOTNUM IN('TAOM7U034N') 
GROUP BY LOTNUM, OPCODE 

Это один гораздо быстрее, как 0,05 секунды. Однако это возвращает первую запись, которая является более старой датой. Мне нужна последняя дата, которая является второй.

ответ

1

Если вы в порядке с другим полем, включенным в выборку, вы можете попробовать что-то вроде этого.

SELECT 
    LOTNUM, 
    OPCODE, 
    DATERELEASED, 
    MAX(DATEADDED) 
FROM 
    HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i 
WHERE 
    LOTNUM IN('TAOM7U034N') 
+0

Это хорошо. Но все еще надеялся, что еще есть ответы. – aozora

Смежные вопросы