powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / КАК вернуть из базы отсортированной по времени n последних записей
14 сообщений из 14, страница 1 из 1
КАК вернуть из базы отсортированной по времени n последних записей
    #32012252
Spy--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КАК вернуть из базы отсортированной по времени n последних записей
Можно ли это одним запросом типа select bottom 10 from... order by time....
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012257
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select top 10 bottom from... order by time desc
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012258
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть-чуть иначе
select top 10 * from... order by time desc
Но если сортировка нужна прямая, то можно создать 1 запрос в виде
view, а из того уже вызывать order by time
Если у каждой записи есть уникальный ID,
то можно и так
SELECT * FROM...
where id in (select top 10 id from... order by time desc)
order by time
Наверняка, есть еще и масса других способов...
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012259
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ChA: Что значит прямая сортировка? В смысле первые 10 записей? А зачем тогда так усложнять? Почему просто не опустить desc?..
И какой смысл в SELECT * FROM...
where id in (select top 10 id from... order by time desc)???
Это ж два раза одну и ту же работу делать....
Но раз уж на то пошло, то я пожалуй предложу еще и
SELECT * FROM... where id in(select id from ...
where id in (select top 10 id from... order by time desc))
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012260
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Spy : В Вашем запросе я воспринял bottom как имя поля и только теперь до меня дошло что это еще и дно по англицки
На этом месте должен быть список полей которые необходимо выбрать
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012270
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dmitry
Простите, ради Бога, но Вы внимательно прочитали исходый вопрос
и мой запрос ?
Необходимо вернуть последние(!) 10 записей - исходный вопрос, но !
Пользователь может не захотеть видеть их в обратном порядке, то
есть DESC, а в прямом, то есть - ASC. Я не знаю нужно ли это,
поэтому просто попытался предсказать, какой вопрос последует дальше,
так как часто именно такие пожелания и возникают.
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012272
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааа, тогда понятно, сорри. Просто в вопросе про это ничего не сказано, а инициатива обычно наказуема
поэтому я не стал дальше заботиться об удобстве пользователя и Ваш ответ меня несколько удивил.
С моей стороны вопрос снят.
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012276
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в лоб если:
SELECT * FROM
(select top 10 * from... order by time desc) as t
order by time
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012302
Spy--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в представлении можно делать
order By
а то у меня что-то ругается?
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012313
Spy--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то у меня не правильно, запрос возвращает сортированное по времени по убыванию вместо по возрастанию

select * from
(SELECT top 10 Protokol.Rid AS Рид, Uslugi.Usluga AS Услуга, Name1.Name AS Исполнитель, Name.Name AS Заказчик,
Protokol.DataTime AS Время, Errors.Description AS Ошибка
FROM Errors INNER JOIN
Protokol ON Errors.ID_Errors = Protokol.ID_Errors INNER JOIN
Name ON Protokol.ID_Who = Name.KeyName INNER JOIN
Uslugi ON Protokol.NumUslugi = Uslugi.NumUslugi INNER JOIN
Name Name1 ON Protokol.ID_Executor = Name1.KeyName
order by Protokol.datatime desc) as t
Order By t.Время asc

как будто работает только эта часть

SELECT top 10 Protokol.Rid AS Рид, Uslugi.Usluga AS Услуга, Name1.Name AS Исполнитель, Name.Name AS Заказчик,
Protokol.DataTime AS Время, Errors.Description AS Ошибка
FROM Errors INNER JOIN
Protokol ON Errors.ID_Errors = Protokol.ID_Errors INNER JOIN
Name ON Protokol.ID_Who = Name.KeyName INNER JOIN
Uslugi ON Protokol.NumUslugi = Uslugi.NumUslugi INNER JOIN
Name Name1 ON Protokol.ID_Executor = Name1.KeyName
order by Protokol.datatime desc
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012330
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, у меня например такое выдаёт нормально:

select crdate, name from (select top 10 * from sysobjects order by crdate desc) as t order by crdate

может Вы невнимательно посмотрели?
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012353
Michael+Hopgarden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2SergSuper. В качестве наблюдения.

select crdate from (select top 3 * from sysobjects order by crdate desc) as t order by crdate

crdate
---------------------------
2001-08-10 17:29:05.773
2001-08-10 17:29:05.833
2001-08-10 17:29:05.903
(3 row(s) affected)

select * from (select top 3 * from sysobjects order by crdate desc) as t order by crdate [asc]

... crdate ...
... ----------------------- ...
... 2001-08-10 17:29:05. 903 ...
... 2001-08-10 17:29:05. 833 ...
... 2001-08-10 17:29:05. 773 ...
(3 row(s) affected)


PS 7.0
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012386
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Залепуха что ли?
У меня всё нормально:

select * from (select top 3 * from sysobjects where type='S' order by crdate desc) as t order by crdate

...11:08:56.497...
...11:08:56.497...
...11:08:56.513...

Но SQL 2000
...
Рейтинг: 0 / 0
КАК вернуть из базы отсортированной по времени n последних записей
    #32012511
Michael Hopgarden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Залепуха что ли?
Похоже на то.

Кстати, с where type='S' тоже отработало корректно.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / КАК вернуть из базы отсортированной по времени n последних записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]