首先 - 感谢您提前寻找并寻求帮助,非常感谢!
基本上我需要从A~Z排序表A,列DESCRIPT,然后......
基于此类,然后更新表B,列PRINTORDER,以便最低排序值具有PRINTORDER = 1,最高排序值将具有PRINTORDER = 20,000
在数据子集中,最低的是18681&最高为18695.(实际表格范围为1到20,000)
唯一需要修改的数据是表B中的PRINTORDER。
以下是表A中的数据子集:
INUM DESCRIPT
23151 Crayon Apron
23152 Acrylic bunny acry153
23153 Acrylic easter egg acry154
23154 Acrylic posypot tulip acrye01a
23155 Acrylic orn chick acrye02
23156 Hat baby chick bge10151
23157 Sipper baby chick bge10158
23158 Grow chick ea10991
23159 Nail crystals easter ea11052
23160 Mug jelly bean em11681
23161 Plush tumbleweed chick he10148
以下是表B中的数据子集:
ID INUM PrintOrder
142161 23151 18681
144054 23161 18683
145092 23159 18687
145093 23160 18688
145094 23152 18689
145095 23153 18690
145096 23155 18691
145097 23154 18692
145098 23158 18693
145099 23156 18694
145100 23157 18695
这是希望的结果:
ID INUM PrintOrder
142161 23151 18681
144054 23161 18694
145092 23159 18693
145093 23160 18692
145094 23152 18689
145095 23153 18683
145096 23155 18687
145097 23154 18688
145098 23158 18690
145099 23156 18691
145100 23157 18695
谢谢&新年快乐!
答案 0 :(得分:0)
这可能有用。首先设置计数器(i),从1到20000(如果你有20000行)。 然后使用UPDATE ... JOIN ... ORDER BY模式按DESCRIPT排序,此时您可以将PrintOrder设置为序列号。 我希望它适合你。
set @i:=1;
UPDATE b b
JOIN
(
SELECT a.INUM, DESCRIPT
FROM a AS a
WHERE DESCRIPT <> ''
ORDER BY DESCRIPT
) a
ON b.INUM = a.INUM
SET b.PrintOrder=@i:=@i+1;