Подтвердить что ты не робот

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

Если у меня есть таблица с столбцами id, name, score, date

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

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

Я хочу получить все поля этой записи..

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Try

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

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

Ответ 4

Использование "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)

Ответ 5

При использовании 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 с самой ранней датой.

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