Я создал новый столбец не нуль с значением по умолчанию 0 для моей таблицы и сохраняет порядки отображения. Я хочу обновить все строки для этой таблицы, что displayorder имеет значение row_number() над упорядоченным идентификатором. здесь я могу сделать это для одного id. Как я могу это сделать для всех идентификаторов.Обновление столбца на основе row_number()
мой стол:
id | personid | name | displayorder
---+----------+--------+------------
1 | 10 | test1 | 0
2 | 10 | test2 | 0
3 | 10 | test3 | 0
4 | 10 | test4 | 0
5 | 10 | test5 | 0
6 | 11 | test6 | 0
7 | 11 | test7 | 0
8 | 12 | test8 | 0
я хочу результат:
id | personid | name | displayorder
---+----------+--------+------------
1 | 10 | test1 | 1
2 | 10 | test2 | 2
3 | 10 | test3 | 3
4 | 10 | test4 | 4
5 | 10 | test5 | 5
6 | 11 | test6 | 1
7 | 11 | test7 | 2
8 | 12 | test8 | 1
здесь мой SQL-код, но он работает только для только один данный ID:
update MyTable
set displayorder = z.ord
FROM (
SELECT row_number() over (order by id) as ord, id
FROM MyTable p2
where p2.personid = 1
) z
where MyTable.id= z.id
and personid = 1
вы действительно есть 2 таблицы - '' productproperty' и MyTable' или это та же таблица? –
Извините, я исправил его. У меня только 1 стол. – Can
, тогда вам определенно лучше пойти с ответом без участия, я думаю, что он будет простейшим и быстрым –