SQL-запрос на поиск записей с последней датой
Здравствуйте.
Помогите. Уже весь мозг сломал, не могу запрос составить. Вроде задача несложная, но решить никак не получается.
В БД имеются повторяющиеся записи за разные даты, например:
Запись1 | Дата1 |
Запись2 | Дата1 |
Запись3 | Дата1 |
Запись1 | Дата2 |
Запись3 | Дата3 |
Запись2 | Дата4 |
Запись2 | Дата5 |
Задача — выбрать все не повторяющиеся записи с последней датой этой записи.
В результате выполнения запроса должно получиться:
Запись1 | Дата2 |
Запись2 | Дата5 |
Запись3 | Дата3 |
Уже все SELECT’ы замучил, пока ничего подходящего не вышло.
Запрос на выборку с последней датой
Есть таблица, предположим, код товара, ЛВ, адрес сбора, дата. Нужно отбросить все старые даты.
Запрос записи из подчиненной таблицы с последней датой
Добрый день, коллеги! давно не юзал аксесс, кое что подзабыл. Есть две таблицы: АВР и Движение.
SQL-запрос с датой
добрый день. опишу ситуацию делаю запрос id:=ADOTable1.Fields.Value; adoquery1.SQL.Clear; .
Запрос с датой в Sql
Всем доброго времени суток, возникла проблема, создал рабочий запрос в Sql Server, но не могу.
Сообщение было отмечено WoodHead как решение
Решение
Сообщение от WoodHead
Одинаково с индексами и без индексов. Настораживает, что каждый раз разные результаты. Точней, чаще всего 0,5 сек, но бывают выбросы более 2 сек. Посмотрел время выполнения операций — 99% занимает Sending Data, что бы это ни значило.
Добавлено через 18 минут
Пардон, как оказалось, я просто не умею их (индексы) готовить.
При попытке сделать полнотекстовый индекс по полю с записями появилось предупреждение, что у меня тип БД рожей не вышел. Поменял InnoDB на MyISAM, получилось добавить полнотекстовый индекс. Теперь стабильно отрабатывает за 0,125. 0,140 с. Спасибо за подсказку.
Добавлено через 10 минут
Хе-хе, я лошаре ми кантаре. Убрал все индексы, все равно за 0,125 с отрабатывает. Поменял обратно на InnoDB — оппа, тормоза вернулись.
SQL get the last date time record [duplicate]
The community reviewed whether to reopen this question 2 years ago and left it closed:
Original close reason(s) were not resolved
I’m trying to get the last datetime record from a table that happens to store multiple status. My table looks like so:
The results should be
8 Answers 8
If you want one row for each filename, reflecting a specific states and listing the most recent date then this is your friend:
Will return one result with the latest date.
Will return all results that have the same maximum date, to the milissecond.
This is for SQL Server. I’ll leave it up to you to use the DATEPART function if you want to use dates but not times.
Как выбрать последнее значение по дате и предыдущее в одной строке?
В таблице несколько миллионов записей, куда ежедневно заносится id (неуникален) клиента, дата и его баланс.
Надо сделать запрос, который покажет самое последние id клиента, дата его последнего изменения баланса, последний баланс и дата предпоследнего изменения баланса и предпоследний баланс, для каждого клиента в базе
Такой запрос выдает последнее изменение:
Как к нему добавить предыдущее?
- Вопрос задан более года назад
- 1530 просмотров
- Вконтакте
Вы по всей видимости так и не прочитали и не посмотрели как работает ROW_NUMBER из ответа на предыдущий вопрос !?
посмотрите вывод запроса с ROW_NUMBER() !
в данном случае row_number() нумерует в разбивке по id по убыванию даты и соответственно, предыдущая запись — с номером 2
для наглядности вынес подзапрос с row_number в WITH — обобщенное_табличное_выражение
Если выводить последнее и предыдущее значение в одной строке, то выбираем каждое подзапросом и объединяем подзапросы через LEFT JOIN (к последнему присоединяем предыдущее) по id. Через LEFT JOIN чтобы из левой таблицы (последние значения) выбирались все строки и присоединялись из правой (предыдущие значения) те строки какие есть, а если нет, то — NULL
Finding the last time a table was updated
. will tell me the last time a table was created and modified (from a DDL perspective). But I want to know the last time actual data was either inserted or removed from the table. Is it possible to get this in SQL Server?
2 Answers 2
You might be able to get an idea from
but the data there is not persisted across service restarts and might not be accurate for your requirements (e.g. running DELETE FROM T WHERE 1=0 will update the time even though no rows were actually deleted)
Is there any way I can run this for all tables in a database at a time, instead of single table?
Hi you could add a (hidden) column using the temporal table feature, history table is not required if you just want to track when the last update was. If you want to track deletes you WILL need the history table.
Updated datetime2(7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
hat tip to my friend Daniel who introduced me to the idea, a lot more details on his blog here