У меня очень быстрый вопрос. У меня есть ряд заказов, в которых каждый заказ может иметь приоритет. Приоритет может быть либо NULL, либо INT. Каждый сейчас и потом я хочу устроить приоритет назад, начиная с 1.Синтаксис SQL UPDATE для автоматического повторного набора номера
Например:
NULL, NULL, 5, NULL, 7, NULL, NULL, 15
Изменить его
NULL, NULL, 1, NULL, 2, NULL, NULL, 3
Что является наиболее эффективным SQL UPDATE
синтаксис для достижения этой цели ? Есть идеи? Я не мог найти хороший способ архивировать это, но использовать курсор.
Приветствия, Sam
Edit - в соответствии с просьбой Йоргос Betsos
схемы (упрощенный для вопроса цели)
CREATE TABLE [dbo].[tblOrder]
(
[OrderId] [int] NOT NULL,
[Priority] [int] NULL,
CONSTRAINT [PK_tblOrder]
PRIMARY KEY ([OrderId] ASC)
)
Пример вывода
Order Id | Priority
---------+---------
12343 | NULL
12344 | NULL
...
...
...
12449 | 5
12450 | NULL
12451 | 7
...
...
...
12900 | NULL
12901 | NULL
12902 | 15
Спасибо!
пожалуйста, вы можете также разместить схему таблицы и настроить выборочные данные таким образом, чтобы включать имена полей? –
Не следует избегать использования курсоров только потому, что все говорили вам, что они «злые». Если вы знаете синтаксис и можете написать запрос, который вам нужен, используйте его и используйте. Я понимаю, что вы спрашиваете: «Что является самым эффективным SQL UPDATE ..», но вы никогда не знаете, курсор может работать отлично. :) – Tony
@Tony Cursors не только неэффективны и громоздки в использовании, они необходимы и ортогональны к декларативному основанному на множестве мышлению, который является родным для реляционных баз данных. Как только вы действительно поймете, что означает набор, вы никогда не оглядитесь на курсоры, если вы не будете вынуждены их использовать. – Lucero