Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оставить в таблицу ровно K последних записей 
V
    Опции темы
Afrodiziac
Дата 15.7.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Здравствуйте.
Необходимо оставить в таблице ровно K записей (глубина хранения)

Первая мысль:
1) Выбрать последние K записей из таблицы.
2) Удалить все те записи которые не вошли в эти K записей.

Код

CREATE PROCEDURE dbo.NameProc
@K int
AS
BEGIN
 DECLARE @temp TABLE(ID uniqueidentifier NOT NULL, ColName nchar(10), ColValue int);
 SET @temp = (SELECT TOP (@K) * FROM Test ORDER BY ColName DESC);                          <--Ошибка

 --Тут надо что-то типа
 --DELETE FROM Test
 --WHERE IF EXISTS (SELECT * FROM @temp WHERE @temp.ID == Test.ID)
END


В общем пишет ошибку "Must declare the scalar variable "@temp"."

Это сообщение отредактировал(а) Afrodiziac - 15.7.2008, 13:48
PM MAIL   Вверх
SergKO
Дата 16.7.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: нет
Всего: 20



Попробуйте что-нибудь вроде
Код

delete from Test
where ID not in (select top (@K) ID from Test order by ColName desc)


А ошибка у Вас потому, что табличную переменную @temp надо заполнять insert'om

Код

insert into @temp (ID, ColName, ColValue)
      select top (@K) ID, ColName, ColValue from Test order by ColName desc

delete from Test
where ID not in (select ID from @temp)


Кстати, в @temp достаточно иметь одно поле ID.

Это сообщение отредактировал(а) SergKO - 16.7.2008, 10:32
PM MAIL   Вверх
Afrodiziac
Дата 16.7.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Большое Спасибо за помощь в создании запроса SergKO!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.