Обновлять категорию порядка строк в SQL - PullRequest
1 голос
/ 11 июня 2019

У меня есть две таблицы Images и Category в базе данных SQL.Images images содержит столбец imageorder, который сейчас содержит случайный порядок, поэтому я хотел бы переупорядочить этот порядок, начиная с 1 и т. Д., Но это должно быть по категориям.

Например,Таблица категорий содержит категории Twowheeler и Fourwheeler, а таблица Images содержит 10 строк из 4 строк для Twowheeler и 6 строк для Fourwheeler.

SO, imageorder столбец должен обновляться как1,2,3,4 для Twowheeler и 1,2,3,4,5,6 для Fourwheeler.

1 Ответ

1 голос
/ 11 июня 2019

Это должно быть примерно так:

WITH DataSource AS
(
    SELECT *
          ,ROW_NUMBER() OVER(PARTITION BY categoryid ORDER BY imageOrder) rowID
    FROM Images 
)
UPDATE IMages
SET ImageOrder = DS.rowID
FROM Images I
INNER JOIN DataSoruce DS
    ON I.ImageId = DS.ImageID;

Идея состоит в том, чтобы использовать ROW_NUMBER для упорядочивания изображений. Мы используем PARTITION BY, потому что мы хотим сбросить заказ для каждого category. Кроме того, нам нужно использовать Common Table Expression до store этих данных и затем использовать их в операторе INNER JOIN - нам не разрешено использовать функцию ROW_NUNMBER непосредственно в операторе UPDATE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...