Я делаю 3 запроса, чтобы изменить порядок строк в моей таблице
SELECT @i:=0;
UPDATE imagedata SET imagedata.rank = 0;
UPDATE imagedata SET imagedata.rank = (SELECT @i:=@i+1) WHERE imagedata.kategorieID = 1;
, который я выполняю сверху вниз.
Вопрос: Есть ли более короткий способ сделать это?
спасибо за все отзывы.
но теперь у меня есть другой идеал:
Каким-то образом мне нужно «соединить» «kategorieID» с колонкой «id (первичный ключ)»
Поэтому мне нужно хранить обе информации в столбце «ранг» в формате:
Сххй
c = номер категории (от 0 до 4)
xxx = id (от 1 до ... n) .. уникальный!
пример: вывод:
rank
+------+
+ 1001 +
+ 1002 +
+ 1003 +
+ ... +
+ 1018 +
+ ... +
+ 2001 +
+ 2002 +
+ 1019 +
+ 1020 +
пока я делал это так:
UPDATE imagedata SET imagedata.rank = (SELECT CONCAT(kategorieID,"",LPAD(id,3,'0')) ) WHERE id=88;
как только этот «ранг» заполняется данными, это дает мне возможность поменять 2 идентификатора.
Поэтому я должен:
1) получить "ранговый" столбец id_1 и id_2
2) получить подстроку ('xxx') этой строки, например: ("004" .. "012")
3) обмениваться подстроками id_1 "rank" и id_2 "rank"
SELECT @ix1:=SUBSTRING(rank, -3) FROM imagedata WHERE id=88;
SELECT @ix2:=SUBSTRING(rank, -3) FROM imagedata WHERE id=83;
.. Я знаю, как его получить, но не знаю, как его обменять?