У овом водичу ћемо вас провести кроз различите методе и технике које можемо користити за одабир најновијег записа из табеле на основу датума.
Примјера података
У сврху демонстрације користимо Сакила узорак базе података која је доступна за МиСКЛ и ПостгреСКЛ укусе.
Слободно преузмите и увезите узорак базе података на свој сервер. Такође можете користити било који други скуп података према потреби.
Пример 1: ОРДЕР БИ
Најосновнији и најједноставнији метод који можемо да користимо за преузимање најновијег записа по датуму је коришћење СКЛ ОРДЕР БИ клаузуле.
Можемо поређати записе у опадајућем редоследу на основу вредности датума, а затим ограничити резултат на само један ред.
Узмимо на пример табелу за изнајмљивање из Сакила узорка базе података. Садржи колону „рентал_дате“ која означава датум када је филм изнајмљен.
Ово можемо користити да покажемо како да користимо ОРДЕР БИ клаузулу за преузимање најновијег записа из табеле.
СЕЛЕЦТ *
ОД изнајмљивања
ОРДЕР ПО рентал_дате ДЕСЦ
ЛИМИТ 1 ;
У овом случају користимо клаузулу ОРДЕР БИ и прослеђујемо „рентал_дате“ као циљну колону. Такође обезбеђујемо да кажемо бази података да поређа записе у опадајућем редоследу.
Коначно, такође ограничавамо број излазних записа који треба да врате последњи ред из табеле.
Пример 2: Коришћење функције Мак().
Да ли сте знали да можемо да користимо функцију мак() за вредности датума? Да, можемо да користимо једноставан СКЛ подупит и функцију мак() на вредностима датума да бисмо преузели најновији запис из дате табеле.
Размотрите следећи пример:
СЕЛЕЦТ *ОД изнајмљивања
ВХЕРЕ рентал_дате = (СЕЛЕЦТ МАКС(рентал_дате) ФРОМ рентал);
Коришћењем потупита проналази се максимални датум изнајмљивања из табеле. У главном упиту, требало би да преузмемо записе са „рентал_дате“ једнаким максималном датуму.
Пример 3: Функције прозора
За базе података које подржавају функције прозора, можемо користити функцију потупита и ров_нумбер() да бисмо преузели најновији запис из табеле на следећи начин:
СЕЛЕЦТ *ИЗ (
СЕЛЕЦТ *,
РОВ_НУМБЕР() ПРЕКО ( ОРДЕР БИ рентал_дате ДЕСЦ) АС рн
ОД изнајмљивања
) АС потупит
ВХЕРЕ рн = 1 ;
У датом примеру, потупит додељује број реда сваком реду на основу колоне „рентал_дате“ у опадајућем редоследу помоћу функције прозора РОВ_НУМБЕР().
Спољни упит затим бира све колоне из потупита где је број реда 1, ефективно бирајући најновији запис(е) о изнајмљивању.
Закључак
У овом посту смо истражили различите методе и технике које можемо користити за преузимање најновијег записа на основу датума.