2015-02-19 4 views
0

Я перестаю работать с SQL, я не могу войти через консоль менеджера в базу данных. У меня нет пароля, поэтому мне нужно сделать все с помощью запроса.Обновить Столбец существующих значений Закажите другой столбец, а затем ID

В базе данных есть позиция тега, но эта единица находится в порядке тега Bundle. Эта позиция тега используется для создания дерева проектов в приложении. И там мы можем «сортировать по номеру проекта, поэтому весь проект неупорядочен, поэтому мне нужно обновить эту колонку. Я узнал об этом.

1. Первый шаг, чтобы удалить значения в bun_tagposition

UPDATE tew_bundle SET bun_tagposition = null 

2. Второй шаг, чтобы вставить новое значение в bun_tagposition

SELECT DISTINCT bun_tag , bun_tagposition 
FROM tew_bundle 

DECLARE @id INT 

SET @id = 0 

UPDATE tew_bundle 

SET @id = bun_tagposition = @id + 1 

Этот код работает отлично, но порядок неправильный Этот код имеет порядок bun_id и мне нужен заказ bun_tag, который является проектом No

Есть ли способ исправить это, чтобы сказать, что код, который он должен быть обновлен, следует за bun_tag.

Спасибо за любую помощь, я уже несколько дней страдаю от этой проблемы.

Hugo

+1

Какие dbms? (Решение зависит от этого ...) – jarlh

+1

В дополнение к добавлению соответствующего тега базы данных, пожалуйста, отредактируйте свой вопрос с образцами данных и желаемыми результатами. Это всегда помогает выяснить, что действительно задает вопрос. –

+0

@Gordon SQL Server 2008 –

ответ

0

Если я правильно понимаю, вы хотите, последовательный порядок, основанный на другой колонке. Это предполагает использование row_number() и обновляемого КТЭ:

with toupdate as (
     select tb.*, 
      row_number() over (order by projectno) as seqnum 
     from tew_bundle tb 
    ) 
update toupdate 
    set bun_tagposition = seqnum; 
Смежные вопросы