我对表格进行了三次查询以重新排列行
SELECT @i:=0;
UPDATE imagedata SET imagedata.rank = 0;
UPDATE imagedata SET imagedata.rank = (SELECT @i:=@i+1) WHERE imagedata.kategorieID = 1;
我按照自上而下的顺序执行它。
问题:有没有更短的方法?
感谢所有的反馈,但是我现在有一个不同的想法: 我必须“连接”“kategorieID”和“id(主键)”列,因此我需要将两个信息存储到“rank”列中,格式如下:
cxxx
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;
一旦“rank”被填充数据,我就可以交换2个ID。因此,我需要: 1)获取id_1和id_2的“rank”列 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;
我知道如何获得它,但不知道如何兑换它?
rank
设置为0,除了那些具有kategorieID
为1的,它们应该被增加。 - Colin O'Dell