sql запрос, чтобы получить самую раннюю дату

если у меня есть таблица с идентификаторами столбцов, именем, счетом, датой

и я хотел запустить sql-запрос, чтобы получить запись, где id = 2 с самой ранней датой в наборе данных.

можете ли вы сделать это в запросе или вам нужно зациклиться после факта?


EDIT: Чтобы быть явным, я хочу получить все поля этой записи. ,

Если вам просто нужна дата:

SELECT MIN(date) as EarliestDate FROM YourTable WHERE id = 2 

Если вы хотите получить всю информацию:

 SELECT TOP 1 id, name, score, date FROM YourTable WHERE id = 2 ORDER BY Date 

Предотвратите циклы, когда сможете. Петли часто приводят к курсорам, а курсоры почти никогда не нужны и очень часто неэффективны.

 SELECT TOP 1 ID, Name, Score, [Date] FROM myTable WHERE ID = 2 Order BY [Date] 

Пытаться

 select * from dataset where id = 2 order by date limit 1 

Прошло некоторое время с тех пор, как я сделал sql, так что это может потребовать некоторой настройки.

Использование «limit» и «top» не будет работать со всеми SQL-серверами (например, с Oracle). Вы можете попробовать более сложный запрос в чистом sql:

 select mt1.id, mt1."name", mt1.score, mt1."date" from mytable mt1 where mt1.id=2 and mt1."date"= (select min(mt2."date") from mytable mt2 where mt2.id=2) 

При использовании TOP или подзапроса оба работают, я бы разбил проблему на шаги:

Найти запись цели

 SELECT MIN( date ) AS date, id FROM myTable WHERE id = 2 GROUP BY id 

Присоединиться, чтобы получить другие поля

 SELECT mt.id, mt.name, mt.score, mt.date FROM myTable mt INNER JOIN ( SELECT MIN( date ) AS date, id FROM myTable WHERE id = 2 GROUP BY id ) x ON x.date = mt.date AND x.id = mt.id 

Хотя это решение, используя производные таблицы, длиннее, это:

  • Легче тестировать
  • Самодокументирование
  • расширяемый

Это легче проверить, так как части запроса могут выполняться автономно.

Он сам документируется, поскольку запрос непосредственно отражает требование, т. Е. В производной таблице перечисляется строка, где id = 2 с самой ранней датой.

Он расширяется, как если бы требовалось другое условие, это можно легко добавить к производной таблице.

Interesting Posts

Как выбрать частичную таблицу для экспорта с использованием SQL?

Как распечатать длинный текст на многостраничный

Захват отношения между двумя строками при вставке одной из двух строк

Округление денег на десятичный знак в SQL Server

SQL подсчитывает, сколько раз статус отображается подряд

Как я могу заполнить родительскую и дочернюю таблицы из другой таблицы?

Работа с хранимыми процедурами (SQL Server) в WebAPI2

Удаление нескольких файлов из папки с использованием T-SQL без использования курсора

Использование базы данных SQL Server SQL .MDF с использованием ASP.NET в сравнении с использованием SQL Server

SQL Server LocalDB, доступ к которому осуществляется клиентом через службу EF и Windows

SSIS – использование задачи выполнения ODBC SQL с параметрами в импортируемый набор результатов

Цикл цикла TSQL в последовательности

Выберите данные из двух таблиц без условия соединения, t-sql

Обновить инструкцию SQL только в том случае, если два значения совпадают в другой таблице

SQL Server Date Logic – поиск следующей даты напоминания

Давайте будем гением компьютера.