gpt4 book ai didi

mysql - 根据表 B 的排序结果更新表 A 中的值 (MySQL)

转载 作者:行者123 更新时间:2023-11-29 21:39:53 25 4
gpt4 key购买 nike

首先 - 提前感谢您的关注和可能的帮助,非常感谢!

基本上我需要对表 A、列 DESCRIPT 从 A~Z 进行排序,然后...

基于此排序,然后更新表 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

谢谢,新年快乐!

最佳答案

这可能有效。首先,设置计数器 (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;

关于mysql - 根据表 B 的排序结果更新表 A 中的值 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com