添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
postgres=# \d book2
                              Table "public.book2"
 Column |       Type        |                     Modifiers                      
--------+-------------------+----------------------------------------------------
 id     | integer           | not null default nextval('book2_id_seq'::regclass)
 name   | character varying | 
 tag    | character varying |
postgres=# select * from book2;
 id | name | tag 
----+------+-----
  1 | java | aa
  1 | java | bb
  1 | java | cc
  2 | C++  | dd
  2 | C++  | ee
(5 rows)

需要的效果:

 name | string_agg 
------+------------
 C++  | dd,ee
 java | aa,bb,cc
(2 rows)

方法1:string_agg(字段名,分隔符)

postgres=# select name,string_agg(tag,',') from book2 group by name;
 name | string_agg 
------+------------
 C++  | dd,ee
 java | aa,bb,cc
(2 rows)

方法2:array_agg(字段名)

postgres=# select name,array_agg(tag) from tb3 group by name;
 name | array_agg  
------+------------
 c++  | {dd,ee}
 java | {aa,bb,cc}
(2 rows)<strong>
</strong>postgres=# select name,array_to_string(array_agg(tag),',') from tb3 group by name;
 name | array_to_string 
------+-----------------
 c++  | dd,ee
 java | aa,bb,cc
(2 rows)


array_agg(distinct(字段名)) 拼接唯一的字段

实例表:postgres=# \d book2 Table "public.book2" Column | Type | Modifiers --------+-------------------+------------
1. 多行 合并成 一行 //方式一:使用string_agg函数,直接把一个表达式 成字符串 SELECT string_agg (DISTINCT fieldname, ',' order by fieldname ASC) FROM table; //方式二:使用array_agg函数,,把表达式 成一个数组,一般配合 array_to_string() 函数使用 SELECT array_to_string(array_agg(DISTINCT fieldname order by
判断字符串包含的几种方法: 1. position(substring in string):postgres=# select position('aa' in 'abcd'); position ---------- (1 row)postgres=# select position('ab' in 'abcd'); position ----------
alter table goods add primary key(sid); 2. 添加外键 alter table orders add foreign key(goods_id) references goods(sid) on update cascadeon delete cascade; on update cascade: 被引用行更新时,引用行自动更
你可以使用 PostgreSQL 中的字符串聚合函数 `STRING_AGG` 来合并 多行 语句为 一行 。以下是一个示例: 假设有一个名为 `mytable` 的表,包含一个名为 `message` 的列,存储了 多行 语句。要将这些语句合并为 一行 ,可以使用以下查询: ```sql SELECT STRING_AGG(message, ' ') AS merged_message FROM mytable; 这将返回一个包含所有语句合并在一起的字符串,每个语句之间用空格分隔。 如果要使用其他分隔符,只需将 `STRING_AGG` 函数的第二个参数更改为所需的分隔符即可。例如,如果要使用逗号分隔语句,可以将查询修改为: ```sql SELECT STRING_AGG(message, ',') AS merged_message FROM mytable; 这样将返回一个使用逗号分隔的字符串。