我有一个描述地理结构的表,它像树形结构一样构建,其中 column1 是“国家”,column2 包含称为“region1”的最大行政区域,然后“region2”列包含 region1 的子级等。
所以这
r
/ | \
1 2 3
/ | \ / | \ / | \
11 12 13 21 22 23 31 32 33
对于每个不同的组合,都像这样表示:
cntry| r1 | r2
------------------
r | 1 | 11
r | 1 | 12
r | 1 | 13
r | 2 | 21
r | 2 | 22
r | 2 | 23
r | 3 | 31
r | 3 | 32
r | 3 | 33
此外,每个叶节点都包含一些附加信息,这些信息可以跨越多行。比如邮政编码。所以表格实际上看起来像这样:
cntry| r1 | r2 | zip |
--------------------------|
r | 1 | 11 | a |
r | 1 | 11 | aa |
r | 1 | 11 | aaa |
r | 1 | 11 | aaaa|
r | 1 | 12 | b |
r | 1 | 13 | c |
r | 1 | 13 | cc |
r | 1 | 13 | ccc |
r | 2 | 21 | d |
r | 2 | 22 | e |
r | 2 | 22 | ee |
r | 2 | 23 | f |
r | 3 | 31 | g |
r | 3 | 31 | gg |
r | 3 | 31 | ggg |
r | 3 | 32 | h |
r | 3 | 33 | i |
现在,真正的表包含近 200 万行,在地名列中有大量文本。附加行中有很多重复的信息,其中只有邮政编码是新信息。它占用带宽并且速度很慢。
是否可以进行查询以明确并有序地选择 cntry,r1,r2,但每个不同的行后面的 zip 行与null
其他列中的?所以选择的结果是这样的:
cntry| r1 | r2 | zip |
--------------------------|
r | 1 | 11 | a |
NULL| NULL | NULL | aa |
NULL| NULL | NULL | aaa |
NULL| NULL | NULL | aaaa|
r | 1 | 12 | b |
r | 1 | 13 | c |
NULL| NULL | NULL | cc |
NULL| NULL | NULL | ccc |
r | 2 | 21 | d |
r | 2 | 22 | e |
NULL| NULL | NULL | ee |
r | 2 | 23 | f |
r | 3 | 31 | g |
NULL| NULL | NULL | gg |
NULL| NULL | NULL | ggg |
r | 3 | 32 | h |
r | 3 | 33 | i |