为MySQL编辑。
我在表中有一个嵌套的数据树,我需要对它们进行编号。很容易找到不同的值,获取行号,然后使用它,我有一个嵌套树,需要为每个级别执行此操作。
我的桌子看起来像这样(我显示三个级别,但实际上我有四个或更多)
col1, col2, col3, some data cols ....
-----------------------------------
'AAA', 'AA', 'A', #####
'AAA', 'AA', 'B', #####
'AAA', 'AA', 'C', #####
'AAA', 'BB', 'D', #####
'AAA', 'BB', 'E', #####
'AAA', 'BB', 'F', #####
'BBB', 'CC', 'G', #####
'BBB', 'CC', 'H', #####
'BBB', 'CC', 'I', #####
'BBB', 'DD', 'J', #####
'BBB', 'DD', 'K', #####
'BBB', 'DD', 'L', #####
等...
有比这更多的数据,AAA代表一些字符串等
我需要的是col1中的每个不同,替换(或放入新表)值1,2,3等
然后对于col1中的每个不同,找到col2中的distinct并替换为1,2,3等。对col3重复。
得到这样的东西
col1, col2, col3, some data cols ....
1, 1, 1, #####
1, 1, 2, #####
1, 1, 3, #####
1, 2, 1, #####
1, 2, 2, #####
1, 2, 3, #####
2, 1, 1, #####
2, 1, 2, #####
2, 1, 3, #####
2, 2, 1, #####
2, 2, 2, #####
2, 2, 3, #####
这可以通过SQL脚本实现吗?
因此,提供的答案非常适合Microsoft SQL。 有没有办法在MySQL中做到这一点? 似乎没有任何功能存在于那里。
答案 0 :(得分:0)
select
DENSE_RANK() OVER ( order by col1) Col1
,DENSE_RANK() OVER (PARTITION BY col1 order by col1,col2) Col2
,DENSE_RANK() OVER (PARTITION BY col1,col2 order by col1,col2,col3) Col3
From TableName