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

Вопрос: Если у меня есть таблица с столбцами id, name, score, date и я хотел выполнить SQL-запрос, чтобы получить запись, где id = 2 с самой ранней датой в наборе данных. Можете ли вы сделать это в запросе или вам нужно зацикливаться на фактах? Я хочу получить все поля этой записи.. Лучший ответ: Если вам

Вопрос:

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

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

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

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

Лучший ответ:

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

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

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

Ответ №1SELECT TOP 1 ID, Name, Score, [Date] FROM myTable WHERE ID = 2 Order BY [Date] Ответ №2

Try

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

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

Ответ №3

Использование “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) Ответ №4

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

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

Оцените статью
Добавить комментарий