gpt4 book ai didi

Mysql按组递增列值

转载 作者:行者123 更新时间:2023-11-29 02:22:39 24 4
gpt4 key购买 nike

想要在具有相同 parentid 的组之间增加列。请参阅以下问题:

ID    Name    Parent   Pos
================================
1 Alex 1 0
2 Mary 1 0
3 John 1 0
4 Doe 2 0
5 Bob 2 0
6 Kate 2 0

预期结果

ID    Name    Parent   Pos
================================
1 Alex 1 1
2 Mary 1 2
3 John 1 3
4 Doe 2 1
5 Bob 2 2
6 Kate 2 3

我会使用两个查询来选择父级的不同值,然后执行循环并按组更新,但我觉得有一种更有效的方法! !

最佳答案

这些问题都可以通过排序功能轻松解决。由于 mysql 不支持排名功能,我们必须使用替代方法。检查此查询

-- 密集排序

SELECT 
Id,
NAME,
Parent,
Pos
, case when @previousParent = rankTab.Parent THEN @runningGroup := @runningGroup + 1
else @runningGroup := 1 AND @previousParent := rankTab.Parent
END as denseRank

FROM
inc_col_val_by_group AS rankTab,
(SELECT @runningGroup := 0) AS b
, (select @previousParent := 0 ) as prev
ORDER BY rankTab.Parent -- order by Parent

--

-- -- below are the create table & insert the given records script
-- create the table
CREATE TABLE inc_col_val_by_group
(Id INT
, NAME CHAR(10)
, Parent INT
, Pos INT
)

-- insert some records
INSERT INTO inc_col_val_by_group(Id, NAME, Parent, Pos)
VALUES
(1, 'Alex', 1, 0)
, (1, 'Mary', 1, 0)
, (3, 'John', 1, 0)
, (4, 'Doe', 2, 0)
, (5, 'Bob', 2, 0)
, (6, 'Kate', 2, 0)

关于Mysql按组递增列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020889/

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