Функция SQL LAST ()
Последняя функция () возвращает значение указанного столбца в последней записи.
SQL ПОСЛЕДНИЙ) синтаксис (
SELECT LAST(column_name) FROM table_name;
Примечание: Только поддержка MS Access Последняя функция ().
SQL Server, MySQL и Oracle в SQL ПОСЛЕДНЕГО () место для работы
Синтаксис SQL Server
SELECT TOP 1 column_name FROM table_name
ORDER BY column_name DESC;
примеров
SELECT TOP 1 name FROM Websites
ORDER BY id DESC;
синтаксис MySQL
SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;
примеров
SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;
Oracle Синтаксис
SELECT column_name FROM table_name
ORDER BY column_name DESC
WHERE ROWNUM <=1;
примеров
SELECT name FROM Websites
ORDER BY id DESC
WHERE ROWNUM <=1;
Демонстрационная база данных
В этом уроке мы будем использовать w3big образец базы данных.
Ниже приводится выбранные «сайты» таблица данных:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 本教程 | http://www.w3big.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 6 | 百度 | https://www.baidu.com/ | 4 | CN | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
SQL LAST () примеры
Следующий SQL заявление выбрать столбец таблицы «Сайты», «название» последнего рекордного значения:
примеров
SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;
реализация SQL из приведенных выше результатов, следующие:
Как получить последнюю по дате запись (SQLite)?
У меня есть таблица price (id, link, name, cost, date) . В столбце name содержатся имена товаров, в столбце cost — цена на соответствующий товар. Эти цены с некоторой периодичностью добавляются в таблицу. Мне необходимо вытащить из таблицы последнюю запись конкретного товара по дате. Как я это могу сделать?
Отслеживать
задан 26 янв 2023 в 0:13
55 5 5 бронзовых знаков
order by date limit 1
26 янв 2023 в 1:49
Последняя по дате = первая по убыванию дат. Первая = limit 1 | first 1 | top 1, в зависимости от диалекта sql. По убыванию дат = order by date desc.
26 янв 2023 в 3:42
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
SELECT * FROM price WHERE name = 'product_name' ORDER BY date DESC LIMIT 1;
запрос сначала выбирает все записи с именем товара product_name , затем сортирует их по дате в порядке убывания и возвращ. только одну посл. запись с помощью оператора LIMIT 1 .
SELECT * FROM price p1 WHERE date = (SELECT MAX(date) FROM price p2 WHERE p1.name=p2.name AND p1.name='product_name')
SELECT * FROM (SELECT * FROM price WHERE name = 'product_name' ORDER BY date DESC) as temp_table GROUP BY name
Еще одно решение может быть функции для вашей СУБД, например ROW_NUMBER() в SQL, DENSE_RANK() в Oracle или RANK() в MySQL.
WITH temp_table AS ( SELECT id, link, name, cost, date, ROW_NUMBER() OVER (PARTITION BY name ORDER BY date DESC) as rn FROM price ) SELECT * FROM temp_table WHERE name = 'product_name' and rn = 1;
Предложенный мной ранее запрос с использованием оператора GROUP BY может возвращать неожиданный результат, если таблица price содержит несколько записей с одинаковым именем товара и датой, так как в этом случае неопределенно, какую из этих записей вернет запрос. Есть несколько других способов решить эту задачу. Один из них — это использование сортировки и оператора LIMIT 1 в запросе. Например:
SELECT id, link, name, cost, date FROM price WHERE name = 'product_name' ORDER BY date DESC LIMIT 1;
Этот запрос выбирает все записи с именем товара ‘product_name’, сортирует их по дате в порядке убывания и возвращает только одну последнюю запись с помощью оператора LIMIT 1.
Другой способ — подзапрос с макс. датой:
SELECT id, link, name, cost, date
Как получить последнюю строку sql
Чтобы получить последнюю строку в таблице, можно воспользоваться следующей командой:
Есть что добавить? Зарегистрируйтесь
Курсы по программированию на Хекслете
Backend-разработка
Разработка серверной части сайтов и веб-приложений
Frontend-разработка
Разработка внешнего интерфейса сайтов и веб-приложений и верстка
Создание сайтов
Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails
Тестирование
Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP
Аналитика данных
Сбор, анализ и интерпретация данных на Python
Интенсивные курсы
Интенсивное обучение для продолжающих
DevOps
Автоматизация настройки локального окружения и серверов, развертывания и деплоя
Веб-разработка
Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков
Математика для программистов
Обучение разделам математики, которые будут полезны при изучении программирования
JavaScript
Разработка сайтов и веб-приложений и автоматизированное тестирование на JS
Python
Веб-разработка, автоматическое тестирование и аналитика данных на Python
Java
Веб-разработка и автоматическое тестирование на Java
PHP
Веб-разработка и автоматическое тестирование на PHP
Ruby
Разработка сайтов и веб-приложений на Ruby on Rails
Go
Курсы по веб-разработке на языке Go
HTML
Современная верстка с помощью HTML и CSS
SQL
Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД
Git
Система управления версиями Git, регулярные выражения и основы командой строки
Похожие вопросы
26 октября 2021
26 октября 2021
26 октября 2021
26 октября 2021
- 8 800 100 22 47 бесплатно по РФ
- +7 495 085 28 38 бесплатно по Москве
Направления
- Курсы «Backend-разработка»
- Курсы «Frontend-разработка»
- Курсы «Создание сайтов»
- Курсы «Тестирование»
- Курсы «Аналитика данных»
- Интенсивные курсы
- Курсы DevOps
- Курсы «Веб-разработка»
- Курсы «Математика для программистов»
- Все курсы
О Хекслете
- О нас
- Карьера в Хекслете
- Хекслет Колледж
ООО «Хекслет Рус» 432071, г. Ульяновск, пр-т Нариманова, дом 1Г, оф. 23 ОГРН 1217300010476
- Справка
- Вопросы и ответы
- Сообщество
- Дополнительно
- Условия использования
- Соглашение об обработке ПД
- Оферта
- Акции
EOMONTH (Transact-SQL)
Эта функция возвращает последний день месяца, содержащего указанную дату, с необязательным смещением.
Для вычисления начала месяца можно использовать DATETRUNC .
Синтаксис
EOMONTH ( start_date [ , month_to_add ] )
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
start_date
Выражение даты, задающее дату, для которой необходимо возвратить последний день месяца.
month_to_add
Необязательное целочисленное выражение, задающее количество месяцев, добавляемых к параметру start_date.
Если аргумент month_to_add имеет значение, то EOMONTH добавляет указанное число месяцев к значению start_date и возвращает последний день месяца, соответствующего полученной дате. Если это дополнение переполнено допустимым диапазоном дат, возникает EOMONTH ошибка.
Типы возвращаемых данных
date
Замечания
Функция EOMONTH может удалена к экземплярам под управлением SQL Server 2012 (11.x) и более поздних версий. Он не может удаленно использовать экземпляры с версией до SQL Server 2012 (11.x).
Примеры
А. EOMONTH с явным типом datetime
DECLARE @date DATETIME = '12/1/2022'; SELECT EOMONTH ( @date ) AS Result; GO
Result ------------ 2022-12-31 (1 row(s) affected)
B. EOMONTH со строковым параметром и неявным преобразованием
DECLARE @date VARCHAR(255) = '12/1/2022'; SELECT EOMONTH ( @date ) AS Result; GO
Result ------------ 2022-12-31 (1 row(s) affected)
C. Функция EOMONTH с параметром month_to_add и без него
Значения в этих результирующих наборах отражают дату выполнения между 12/01/2022 и 12/31/2022 (включительно).
DECLARE @date DATETIME = GETDATE(); SELECT EOMONTH ( @date ) AS 'This Month'; SELECT EOMONTH ( @date, 1 ) AS 'Next Month'; SELECT EOMONTH ( @date, -1 ) AS 'Last Month'; GO
This Month ----------------------- 2022-12-31 (1 row(s) affected) Next Month ----------------------- 2012-01-31 (1 row(s) affected) Last Month ----------------------- 2022-11-30 (1 row(s) affected)
Обратная связь
Были ли сведения на этой странице полезными?