Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Top  [new]
Ajvengo
Member

Откуда: Latvia
Сообщений: 206
Здравствуйте!

Ребята помогите с запросом который выдавал бы 1, 2 и 3 максимальные значения из колонки.

Зарание примного благодарен.
31 янв 06, 23:48    [2307291]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
select top 3 * from mytable order by myfield desc
1 фев 06, 00:15    [2307325]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Ajvengo
Member

Откуда: Latvia
Сообщений: 206
Это немного не то что нужно. Попытаюсь обяснить. Существует колонка с цифрами и ещё одна, но в ней должны быть отмечены номерами 1, 2, 3 соответственно только три топовые строки. Я очень надеюсь я понятно изложил свою проблему.
1 фев 06, 01:30    [2307383]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ajvengo
Это немного не то что нужно. Попытаюсь обяснить. Существует колонка с цифрами и ещё одна, но в ней должны быть отмечены номерами 1, 2, 3 соответственно только три топовые строки. Я очень надеюсь я понятно изложил свою проблему.

Тогда читайте статью в FAQ Нумерация результатов запроса
1 фев 06, 01:36    [2307387]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7268
Ему номер строки нужен :) В MS SQL 2005 есть ROW_NUMBER(). Для версии ниже можеш почитать этот ...
1 фев 06, 01:45    [2307393]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Carry
Member

Откуда:
Сообщений: 10
Простите, что вмешиваюсь, не хотелось плодить аналогичных топиков.
Проблема: нужна последняя запись, а не первая. Существует ли своеобразный антидот TOP?
1 фев 06, 13:57    [2309183]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
Carry
Простите, что вмешиваюсь, не хотелось плодить аналогичных топиков.
Проблема: нужна последняя запись, а не первая. Существует ли своеобразный антидот TOP?

Вы сначала расскажите нам что такое "первая" и "последняя" запись. Как они определяются?
1 фев 06, 14:01    [2309218]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Carry
Member

Откуда:
Сообщений: 10
TOP позволяет выбрать первую или нескольколько первых записей из результата запроса, а мне нужна последняя.
1 фев 06, 14:05    [2309247]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Carry
Member

Откуда:
Сообщений: 10
TOP позволяет выбрать первую или нескольколько первых записей из результата запроса, а мне нужна последняя.
1 фев 06, 14:06    [2309252]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
Carry
TOP позволяет выбрать первую или нескольколько первых записей из результата запроса, а мне нужна последняя.

Последняя по какому критерию ? По имени клиента ? По дате его рождения ? По размеру зарплаты ?
1 фев 06, 14:07    [2309257]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Карачаровец
Member

Откуда: Рязань
Сообщений: 134
select top 1 * from <tbl> order by <col> desc
1 фев 06, 14:09    [2309268]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
Carry
TOP позволяет выбрать первую или нескольколько первых записей из результата запроса, а мне нужна последняя.


create table #tab (id_r int identity(1,1), namev varchar(10))
insert into #tab(namev) values ('Record 15')
insert into #tab(namev) values ('Record 47')
insert into #tab(namev) values ('Record 14')
insert into #tab(namev) values ('Record 52')
insert into #tab(namev) values ('Record 35')
insert into #tab(namev) values ('Record 84')
insert into #tab(namev) values ('Record 68')
insert into #tab(namev) values ('Record 14')
insert into #tab(namev) values ('Record 35')

select top 1 * from #tab order by id_r asc
select top 1 * from #tab order by id_r desc

select top 1 * from #tab order by namev asc
select top 1 * from #tab order by namev desc

DROP TABLE #tab

оБратите особое внимание на ASC и DESC
1 фев 06, 14:11    [2309287]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Carry
Member

Откуда:
Сообщений: 10
Есть огромная таблица, где данные хранятся строками, т.е. у нескольких строк один идентификатор, который как-бы объединяет эти строки. Также есть коды (например, код отвечающий за название, количество). Есть названия, которые повторяются. Если делать выборку по такому названию, то получается, что я считываю старые данные о количестве. Поэтому нужна последняя запись с этим названием, чтобы по идентификатору узнать количество.
Надеюсь понятно описала.
P.S. эта база и соответственно структура данных создавалась не мной, я просто пытаюсь ее сопровождать.
1 фев 06, 14:17    [2309319]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
До тех пор, пока вы не решите по какому критерию записи с одинаковым наименованием _упорядчиваются_, ничего не получится
1 фев 06, 14:21    [2309351]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Timon
Member

Откуда: Dushanbe TJK
Сообщений: 2688
автор
Есть огромная таблица, где данные хранятся строками, т.е. у нескольких строк один идентификатор, который как-бы объединяет эти строки. Также есть коды (например, код отвечающий за название, количество). Есть названия, которые повторяются. Если делать выборку по такому названию, то получается, что я считываю старые данные о количестве. Поэтому нужна последняя запись с этим названием, чтобы по идентификатору узнать количество.
Надеюсь понятно описала.
P.S. эта база и соответственно структура данных создавалась не мной, я просто пытаюсь ее сопровождать.


Объясните что такое "старые данные" и "последняя запись "?

или приведите пример того что у Вас есть, и что Вы хотите получить.
1 фев 06, 14:22    [2309358]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Carry
Member

Откуда:
Сообщений: 10
У меня есть название. И таблица:
ID CODE NAME
123FF 1023 Книга1
123FF 1024 5000
124FF 1023 Книга2
124FF 1024 3000

ID-цифрово-буквенный, по нему я сортировать не могу(имею ввиду какой больше или меньше), знаю только, что более поздние записи являются последними.
1 фев 06, 14:34    [2309452]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
Carry
У меня есть название. И таблица:
ID CODE NAME
123FF 1023 Книга1
123FF 1024 5000
124FF 1023 Книга2
124FF 1024 3000

ID-цифрово-буквенный, по нему я сортировать не могу(имею ввиду какой больше или меньше), знаю только, что более поздние записи являются последними.

Да поймите вы уже - в MSSQL слова "последняя запись" можно употреблять только при наличии упорядочивания.
Есть упорядочивание - есть последняя запись
Нет упорядочивания - нет последней записи

А для вашего примера данных вообще не видно никаких проблем.
Хоть ID и одинаков но CODE-то разный

ЗЫ
И ознакомтесь пожалуйста с Рекомендациями по оформлению сообщений. Чтобы не тратить время на выяснение деталей
1 фев 06, 14:42    [2309488]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Carry
более поздние записи являются последними.

Если в таблице нет признака (читай: поля с датой добавления или identity, например), по которому можно сказать, что одна запись добавлена раньше/позже другой, то решить задачу не судьба.
1 фев 06, 14:44    [2309500]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Carry
Member

Откуда:
Сообщений: 10
Ладно, спасибо тем, кто пытался помочь.
Выбора у нет и решение все равно придется найти
1 фев 06, 14:47    [2309516]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
Carry
Ладно, спасибо тем, кто пытался помочь.
Выбора у нет и решение все равно придется найти

Еще бы задача была нормально озвучена ...
1 фев 06, 14:48    [2309521]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
AxlJob
Member

Откуда: Москва
Сообщений: 7
Попытаюсь поучаствовать! Создайте столбец: Дата создания записи. При добавлении записи пишите в столбец текущую дату и время. По этому столбцу определяйте последние три записи
16 фев 06, 15:21    [2363424]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Top  [new]
p-lov
Member

Откуда:
Сообщений: 11
Glory
Carry
У меня есть название. И таблица:
ID CODE NAME
123FF 1023 Книга1
123FF 1024 5000
124FF 1023 Книга2
124FF 1024 3000

ID-цифрово-буквенный, по нему я сортировать не могу(имею ввиду какой больше или меньше), знаю только, что более поздние записи являются последними.

Да поймите вы уже - в MSSQL слова "последняя запись" можно употреблять только при наличии упорядочивания.
Есть упорядочивание - есть последняя запись
Нет упорядочивания - нет последней записи

А для вашего примера данных вообще не видно никаких проблем.
Хоть ID и одинаков но CODE-то разный

ЗЫ
И ознакомтесь пожалуйста с Рекомендациями по оформлению сообщений. Чтобы не тратить время на выяснение деталей



Ну я вот не согласен. И первая и последняя запись есть всегда. Они могут содержать разные данные, но тем не менее они будут первой и последней.
Вот я как раз попал на форум в поиске возможности извлеч имеено последнюю запись не зависимо от сортировки!!!!
17 авг 09, 14:38    [7546618]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36823
p-lov
Ну я вот не согласен. И первая и последняя запись есть всегда. Они могут содержать разные данные, но тем не менее они будут первой и последней.
Вот я как раз попал на форум в поиске возможности извлеч имеено последнюю запись не зависимо от сортировки!!!!
Ну так выбирайте случайные записи, кто вам мешает. Только они от этого первыми и последними не станут.
17 авг 09, 14:45    [7546673]     Ответить | Цитировать Сообщить модератору
 Re: Top  [new]
Glory
Member

Откуда:
Сообщений: 104760
p-lov


Ну я вот не согласен. И первая и последняя запись есть всегда. Они могут содержать разные данные, но тем не менее они будут первой и последней.
Вот я как раз попал на форум в поиске возможности извлеч имеено последнюю запись не зависимо от сортировки!!!!

Смешно. Если нет критерия сортировки, то любая запись может считаться последней.
17 авг 09, 14:51    [7546726]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить