PostgresSQL递归查询实现省市级联

最近跟同事学来一招,可以利用PostgreSQL的递归功能轻松实现一张表的省市级联的效果,同样,也可以利用该功能实现多重菜单递归查询的功能。虽然使用程序也可以实现这样的功能,但势必影响性能。

 PostgreSQL提供了一个with 的递归功能,将递归后的结果放入这个递归表中,再用递归表进行查询,再次放入,直到实现完整的查询跳出查询。

如求1100的和  

使用postgresql的ARRAY或ARRAR_AGG处理多行变一行等功能

有时候,我们需要将数据库中的某一字段的多行记录,在前端中的一行显示出来,常规的做法是交给前端处理,取出多行数据不做任何处理直接交给前端,前端负责拼接成一行,这样做是可行的,但无疑加重了前端的负担。甚至,有时候由于需要向前端传递特定格式的JSON数据,而这个多行数据是JSON的某一属性,这时候前面的方法就不可取了。

多行变一行

postgresql给我们想到了这一点,它提供了array或arr_agg方法,专门用来做这样的事。