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;
这样将返回一个使用逗号分隔的字符串。