高分请问PostgreSQL中的集合查询有关问题

高分请教PostgreSQL中的集合查询问题

现有项目需要把oracle转成PostgreSQL,

比如现有table及数据如下:

>>表A

depid userid

d1 1111

d1 2222

d1 3333

d2 4444

d2 5555

d2 6666

在oracle中可以自定义一个数值型table的type,

然后通过cast ( multiset 。。。)的方式得到

类似下面的查询结果。

d1 <Collection> // 这里的Collection点开就是3行1列的table,每行值分别为1111,2222,3333

d2 <Collection> // 这里的Collection点开就是3行1列的table,每行值分别为4444,5555,6666

现在PostgreSQL中好像没有multiset这个函数,请问各位该如何实现等同于oracle相同的效果。

若没有系统自带的函数能够实现,自定义函数实现亦可,只是要求是要用1条sql语句实现。

要实在没有类似oracle中的自定义table的返回形式,返回值变成numeric[]数组也可以。

比如:

d1 {1111,2222,3333}

d2 {4444,5555,6666}

请熟悉PostgreSQL的各位大侠赐教。。。



啊哦 我是学MYSQL的 

数据量很多么? 如果不多 你把数据从oracle中导出成一个表 在PostgreSQL建表了在导进去

这样应该很快吧




mysql有这个函数 sqlserver和pg都没有 需要写函数

http://blog.csdn.net/starnight_cbj/article/details/7513863




就是将

depid userid

d1 1111

d1 2222

d1 3333

d2 4444

d2 5555

d2 6666

变成:

1111,2222,3333

4444,5555,6666?




如果你的版本支持的话,可以试下array_agg()或string_agg()函数。




除了UDF、SP外,只有用数组函数




除了UDF、SP外,只有用数组函数




2楼的方法不错ing.




6 楼方法可以采用,可以得到下面格式:

d1 {1111,2222,3333}

d2 {4444,5555,6666}

高分请问PostgreSQL中的集合查询有关问题

相关文章:

你感兴趣的文章:

标签云: