我在表中有一个嵌套的数据树,我需要对它们进行编号。很容易找到不同的值,获取行号,然后使用它,我有一个嵌套树,需要为每个级别执行此操作。
我的桌子看起来像这样(我显示三个级别,但实际上我有四个或更多)
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, #####
这可以通过MySQL脚本来实现吗?
我有以下内容对Microsoft SQL服务器非常有效,现在需要在MySQL中使用相同的功能,但无法找到相同的功能。
SELECT
DENSE_RANK() OVER (ORDER BY col1) R1,
DENSE_RANK() OVER (PARTITION BY col1 ORDER BY col1, col2) R2,
DENSE_RANK() OVER (PARTITION BY col1, col2 ORDER BY col1, col2, col3) R3
FROM table