Sql запрос, чтобы получить самую раннюю дату
Если у меня есть таблица с столбцами id
, name
, score
, date
и я хотел выполнить SQL-запрос, чтобы получить запись, где id = 2
с самой ранней датой в наборе данных.
Можете ли вы сделать это в запросе или вам нужно зацикливаться на фактах?
Я хочу получить все поля этой записи..
Ответы
Ответ 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 с самой ранней датой.
Он расширяется, как если требуется другое условие, это можно легко добавить к производной таблице.