Я выполняю следующий запрос, чтобы «изменить порядок» обновленной таблицы в алфавитном порядке. Существует столбец с именем nOrder, который должен находиться в последовательном порядке. Я обновляю эту колонку:Почему этот запрос SQL неверно?
(отредактировано: забыл включить AND @zone = zone
в моем вопросе, но та же проблема, что происходит)
UPDATE Zones
SET nOrder = 0 WHERE stateKey = @key
DECLARE @zone INT
SET @zone = 1
DECLARE @i INT
SET @i = 1
WHILE @zone < 4
BEGIN
WHILE EXISTS (SELECT TOP 1 cDisplay FROM Zones WHERE stateKey = @key AND zone = @zone AND nOrder = 0)
BEGIN
UPDATE Zones
SET nOrder = @i
WHERE cDisplay = (SELECT TOP 1 cDisplay FROM Zones WHERE stateKey = @key AND zone = @zone AND nOrder = 0 ORDER BY cDisplay)
SET @i += 1
END
SET @zone += 1
set @i = 1
END
таблица становится:
FK zone cDisplay nOrder
.
.
.
.
10 3 MD: CAROLINE, DORCHESTER, KENT 40
10 3 MD: QUEEN ANNE'S 41
10 3 MD: SOMERSET, TALBOT, WILCOMICO 42
10 3 ME: PORTLAND 43
10 3 ME: YORK 44
.
.
.
.
10 3 TX: COUNTIES NORTH OF HOUSTON 99
10 3 TX: DALLAS-FORT WORTH OUTER SUBURBAN 100
10 3 TX: EL PASO 101
10 3 TX: MATAGORDA AND VICTORIA COUNTIES 102
10 3 TX: NORTHEAST COUNTIES 103
10 3 TX: SAN ANTONIO OUTER SUBURBAN AREAS 104
10 3 TX: SOUTHERN TEXAS 43 --???
10 3 TX: TYLER 105
.
.
.
.
«FK» на самом деле «stateKey», но это не подходит.
Почему эта запись не работает? Для меня не имеет большого значения, что это произойдет.
У кого-нибудь есть идеи?
Где инструкция 'select' с предложением' order by'? –
Возможно, это только я, но единственное предложение order by, которое я вижу, - это заказать cDisplay, и если я правильно читаю, тогда «SOUTHERN TEXAS» принадлежит сразу после «SAN ANTONIO ...» – childofsoong
Вывешенная таблица возвращается из 'SELECT * FROM Zones WHERE FK = 10 ORDER BY zone, cDisplay' –