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

Откуда:
Сообщений: 166
Хочу написать команду UPDATE чтобы поле SEQ получило бегущее значение (1,2,3.....)


SELECT TEST SET SEQ=COUNT(*) ?????????
21 мар 05, 15:22    [1402359]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
update
  set seq = (
    select count(*) from test b where b.[Поле_с_признаком_порядка] <= a.[Поле_с_признаком_порядка]
  )
from test a
21 мар 05, 15:26    [1402370]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Good
Member

Откуда:
Сообщений: 166
У меня только 2 поля в таблице : SEQ ,STRING
21 мар 05, 15:29    [1402387]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
нужено уникальное поле в таблице, по которому будет задан порядок
declare @tmp table (seq int,id int primary key)
insert into @tmp(id) select id from sysobjects
update t1
 set t1.seq=t2.am
  from @tmp t1 inner join (
  select t1.id,count(*) as am 
   from @tmp t1 join @tmp t2 on t1.id>=t2.id
     group by t1.seq,t1.id ) t2 on t1.id=t2.id

select * from @tmp order by seq
21 мар 05, 15:30    [1402391]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Good
У меня только 2 поля в таблице : SEQ ,STRING

И по какому принципу Вы хотите их нумеровать?
З.Ы. Добавьте ключ identity(1, 1).
З.Ы.Ы. М.б. после этого поле seq и не понядобится вовсе.
21 мар 05, 15:31    [1402396]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Good
Member

Откуда:
Сообщений: 166
А без временой таблицы нет никакого решения ?
21 мар 05, 15:32    [1402401]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
Good
А без временой таблицы нет никакого решения ?

:)
@tmp - это аналог вашей таблицы
21 мар 05, 15:33    [1402405]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Good
А без временой таблицы нет никакого решения ?

В данном случае временная таблица приведена для примера.
Но пока не будет поля, однозначно задающего порядок - вообще никак нельзя. Только, разве что, через ту же временную таблиус полем id.
Короче - https://www.sql.ru/faq/faq_topic.aspx?fid=126
21 мар 05, 15:35    [1402419]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Good
Member

Откуда:
Сообщений: 166
identity(1, 1) мне не нужен.

Я хочы чтоб у меня была возможность менять значения в поле
21 мар 05, 15:41    [1402446]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Good
identity(1, 1) мне не нужен.

Я хочы чтоб у меня была возможность менять значения в поле

Ну на здоровье. Что мешает держать identity и seq?
P.S. Можно еще курсором попробовать поапдейтить.
21 мар 05, 15:43    [1402452]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Good
Member

Откуда:
Сообщений: 166
В поле SEQ есть значение (55,65,78,99...) .
Мне надо сделать UPDATE на (1,2,3,4,5,6.....)
21 мар 05, 15:44    [1402456]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Good
В поле SEQ есть значение (55,65,78,99...) .
Мне надо сделать UPDATE на (1,2,3,4,5,6.....)

Вы ссылку на фак читали?
21 мар 05, 15:45    [1402463]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Good
Member

Откуда:
Сообщений: 166
Может кто нибудь поможет. ФАК хороший но он мне не очень помогает
21 мар 05, 16:59    [1402904]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
а что ва ещё не помогло?
у вас в таблице есть поле, которое задаёт на ней строгий порядок?
Если нет, то не поможет ничего
21 мар 05, 17:01    [1402917]     Ответить | Цитировать Сообщить модератору
 Re: Update  [new]
MCMXCVIII
Member

Откуда:
Сообщений: 130
А так ?
declare @Num int
select @Num = 1

update test
   set seq = @num,
       @Num = @Num + 1
  from test a
21 мар 05, 17:03    [1402934]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить