В това ръководство ще ви преведем през различните методи и техники, които можем да използваме, за да изберем най-новия запис от таблица въз основа на датата.
Примерни данни
За демонстрационни цели използваме примерната база данни на Sakila, която е налична за разновидности MySQL и PostgreSQL.
Чувствайте се свободни да изтеглите и импортирате примерната база данни на вашия сървър. Можете също да използвате всеки друг набор от данни, ако е подходящо.
Пример 1: ПОРЪЧАЙТЕ ПО
Най-основният и прост метод, който можем да използваме, за да извлечем най-новия запис по дата, е да използваме клауза SQL ORDER BY.
Можем да подредим записите в низходящ ред въз основа на стойността на датата и след това да ограничим резултата само до един ред.
Вземете например таблицата за наем от примерната база данни на Sakila. Той съдържа колоната „rental_date“, която обозначава датата, на която даден филм е бил нает.
Можем да използваме това, за да демонстрираме как да използваме клаузата ORDER BY, за да извлечем най-новия запис от таблицата.
ИЗБЕРЕТЕ *
ОТ наем
ПОРЪЧКА ПО rental_date DESC
ОГРАНИЧЕНИЕ 1 ;
В този случай използваме клаузата ORDER BY и предаваме „rental_date“ като целева колона. Ние също така гарантираме да кажем на базата данни да подреди записите в низходящ ред.
И накрая, ние също ограничаваме броя на изходните записи, които трябва да върнат най-новия ред от таблицата.
Пример 2: Използване на функцията Max().
Знаете ли, че можем да използваме функцията max() за стойности на дата? Да, можем да използваме проста SQL подзаявка и функцията max() за стойности на дата, за да извлечем най-новия запис от дадена таблица.
Разгледайте следния пример:
ИЗБЕРЕТЕ *ОТ наем
WHERE rental_date = (SELECT MAX(rental_date) FROM rental);
Използването на подзаявката намира максималната дата за наемане от таблицата. В основната заявка трябва да извлечем записите с „rental_date“, равна на максималната дата.
Пример 3: Функции за прозорец
За бази данни, които поддържат прозоречните функции, можем да използваме подзаявка и функция row_number(), за да извлечем най-новия запис от таблицата, както следва:
ИЗБЕРЕТЕ *ОТ (
ИЗБЕРЕТЕ *,
ROW_NUMBER() НАД ( ПОРЪЧКА BY rental_date DESC) AS rn
ОТ наем
) AS подзаявка
КЪДЕ rn = 1 ;
В дадения пример подзаявката присвоява номер на ред на всеки ред въз основа на колоната „rental_date“ в низходящ ред с помощта на прозоречната функция ROW_NUMBER().
След това външната заявка избира всички колони от подзаявката, където номерът на реда е 1, ефективно избирайки най-скорошния(ите) запис(и) за наем.
Заключение
В тази публикация проучихме различните методи и техники, които можем да използваме, за да извлечем най-новия запис въз основа на дата.