有一张明细表,表里有几万条数据,新增一个字段sort,sort的值希望是按照明细表的外键id:detId,相同外键id的记录 sort字段从1开始排序,累加1。其实用java倒好写,不过我挺好奇用sql语句实现是什么样,我自己当然写不出来,不过可以用gpt,连哄带蒙问了好久,终于给我的代码能达到我想的效果了,下面是代码:
SET @row_number = 0, @current_detID = NULL;
UPDATE yl_customprescriptiondetails AS t1
JOIN (
SELECT
id,
detID,
(@row_number := CASE
WHEN @current_detID = detID THEN @row_number + 1
ELSE 1
END) AS cfmx_sort,
(@current_detID := detID) AS dummy
FROM yl_customprescriptiondetails
ORDER BY detID
) AS t2
ON t1.id = t2.id
SET t1.cfmx_sort = t2.cfmx_sort;
和gpt提问
问了半天,给的都有问题,不是运行报错,就是结果不对,直到我发了这句:
这东西还得哄着他来,要不然跟他说有错,然后说对不起又把错的给我一遍(ーー;),这次给的代码只有一点问题了,把报错信息告诉他,下一次给的就是正确的了,我本来都心思这次要是还不对,我就用java写了。
这次就是对的了