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

Откуда:
Сообщений: 62
Есть база с кучей поле...

Два из них критерий отбора и одно - поле с датой и временем. Как оставить в базе 100 самый "молодых" записей с выборкой по двум критериям, а остальные удалить? Просто не хватает знаний с какого конца начать...
24 июл 09, 13:35    [7456329]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 887
select top 100 .... order by time
24 июл 09, 13:37    [7456349]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
А может не надо ничего удалять?
Просто когда данные выбираете, то выбирайте только 100 самых молодых записей
а более старые пусть себе лежат...
24 июл 09, 13:39    [7456362]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Есть база с кучей поле...


Поля, они в таблицах...

Как то так:

DELETE 
  Table1
WHERE
  KeyFiled NOT IN (SELECT TOP 100 KeyField FROM Table1 WHERE Fileld1 = <value1> AND Fileld2 = <value2> ORDER BY DateTimeFiled DESC)
24 июл 09, 13:39    [7456364]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Glory
Member

Откуда:
Сообщений: 104760
goldfuzz
Есть база с кучей поле...

Два из них критерий отбора и одно - поле с датой и временем. Как оставить в базе 100 самый "молодых" записей с выборкой по двум критериям, а остальные удалить? Просто не хватает знаний с какого конца начать...

- У базы не бывает полей
- Записи в таблице удаляются командой DELETE. Синтаксис есть в хелпе
- Для внятного ответа нужно предоставлять версию сервера, описание таблиц, пример данных и желаемый результат
24 июл 09, 13:39    [7456370]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Ох...ий программизд
Guest
goldfuzz,

delete top 100

для MS SQL Serever 2005 и выше
24 июл 09, 13:40    [7456373]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
vino
Member

Откуда:
Сообщений: 1191
Ох...ий программизд
goldfuzz,

delete top 100

для MS SQL Serever 2005 и выше

автор
Как оставить в базе 100 самый "молодых" записей
24 июл 09, 13:43    [7456406]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
Извините за база=тфблица.
Спасибо за помощь... :)
24 июл 09, 13:53    [7456458]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Вы последовали моему совету?
Вот и хорошо, не удалите случайно данные которые нельзя удалять, спокойнее спать будете
24 июл 09, 13:55    [7456477]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
pkarklin
автор
Есть база с кучей поле...


Поля, они в таблицах...

Как то так:

DELETE 
  Table1
WHERE
  KeyFiled NOT IN (SELECT TOP 100 KeyField FROM Table1 WHERE Fileld1 = <value1> AND Fileld2 = <value2> ORDER BY DateTimeFiled DESC)


Сорри неполностью сформуровал задачу..
Такую чистку нужно проводить не для всей базы, а для кажого значения Fileld1 - их может быть в базе несколько со совоими полями Fileld2

Fileld1=value1> Fileld2=<value101>
Fileld1=value1> Fileld2=<value102>
Fileld1=value1> Fileld2=<value103>
Fileld1=value1> Fileld2=<value104>
____________________________
Оставить TOP100

Fileld1=value2> Fileld2=<value201>
Fileld1=value2> Fileld2=<value202>
Fileld1=value2> Fileld2=<value203>
Fileld1=value2> Fileld2=<value204>
____________________________
Оставить TOP100

И т.д.

Спасибо
24 июл 09, 14:17    [7456685]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Сорри неполностью сформуровал задачу..


И какие проблемы Вы испытываете?!
24 июл 09, 14:21    [7456713]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
pkarklin
автор
Сорри неполностью сформуровал задачу..


И какие проблемы Вы испытываете?!


С размером базы :) Ну и с запросом...
24 июл 09, 14:26    [7456771]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
это уже интересно, какой размер базы?
24 июл 09, 14:27    [7456780]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
goldfuzz
С размером базы :) Ну и с запросом...


И каково у Вас число записей в таблице? Как пробовали написать запрос, что не получилось?
24 июл 09, 14:27    [7456785]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
iljy
Member

Откуда:
Сообщений: 8711
goldfuzz,

если 2005 и выше - можно так:
delete from Table1
from (select row_number() over(partition by Field1 order by Date desc) r_n from Table 1)
where r_n > 100
24 июл 09, 14:36    [7456885]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
ПРиближаемся периодически к 2 гигам. Сейчас чистится по дате, но это не подходит, т.к. иногда вычищаются записи, входящие в необходимую для статистики сотню... В случае если по Fileld1 количество становится меньше 100, нет статистки, выбриаемой для Fileld1. Собственно, все.
В SQL слаб - спец в отпусках.
24 июл 09, 14:42    [7456958]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
goldfuzz
ПРиближаемся периодически к 2 гигам.


И чего тут удалять?!
24 июл 09, 14:43    [7456975]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
goldfuzz
ПРиближаемся периодически к 2 гигам
Периодически - это раз в год?
А винт 500 гигов?
Другими словами, проблемы с местом на диске начнутся через пару сотен лет?
24 июл 09, 14:44    [7456983]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
goldfuzz,

если 2005 и выше - можно так:
delete from Table1
from (select row_number() over(partition by Field1 order by Date desc) r_n from Table 1)
where r_n > 100
Тогда уж

delete T
from(select row_number() over(partition by Field1 order by Date desc) from Table 1)T(r_n)
where r_n > 100
Или, IMHO, нагляднее, хотя то же самое
;WITH CTE(N) AS (SELECT ROW_NUMBER() OVER(PARTITION BY Field1 ORDER BY [Date] DESC) FROM Table1)
DELETE CTE
WHERE N>100;
24 июл 09, 14:46    [7457011]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
pkarklin
goldfuzz
ПРиближаемся периодически к 2 гигам.


И чего тут удалять?!


МНе объяснительную написать?
Спасибо за помощь.
24 июл 09, 14:53    [7457079]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
iljy
Member

Откуда:
Сообщений: 8711
goldfuzz,

объяснительную не здесь, а вот задуматься не помешает.

jap,
ну да, согласен, так быстрее:) просто особо не вдумывался, написал первое что в голову пришло.
24 июл 09, 14:57    [7457128]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
goldfuzz
МНе объяснительную написать?


Да упаси Боже. Подумали бы лучше... что это не объем...
24 июл 09, 14:59    [7457137]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
pkarklin
goldfuzz
МНе объяснительную написать?


Да упаси Боже. Подумали бы лучше... что это не объем...


В настоящий момент мне нужен просто результат, точнее запрос... У меня есть задача + ограничение объема базы в 2 гига для бесплатной версии сервер. Сейчас попробую предложение jap, хотя в нем НИЧЕГО не понимаю - SQL-ем практически не занимаюсь...
24 июл 09, 15:06    [7457217]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
-=Ogre=-
Member

Откуда:
Сообщений: 384
Уважаемый топикастер, может стоит на время отпуска спеца взять временно на пол ставки кого нить...
Вам же проще будит...
Если хотите, чтобы вам быстро и качественно написали запрос учитывающий все ваши хотелки идите в раздел работы...
ПС насколько я понимаю вам не интересно изучение sql в принципе
24 июл 09, 15:10    [7457256]     Ответить | Цитировать Сообщить модератору
 Re: Просто подскажите направление где рыть :)  [new]
goldfuzz
Member

Откуда:
Сообщений: 62
jap, спасибо, помогло.... Попробую разобраться в сути...
24 июл 09, 15:11    [7457266]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить