Вопрос:
Если у меня есть таблица с столбцами 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 с самой ранней датой.
Он расширяется, как если требуется другое условие, это можно легко добавить к производной таблице.