我有一個像這樣的主表
CREATE TABLE IF NOT EXISTS people
(
country text,
full_name text,
last_name text,
children_names text[]
);
INSERT INTO people (country, full_name, last_name, children_names)
VALUES ('de', 'han', 'post', '{"joe", "joe1", "joe2", "joe3"}');
我可以合并full_name并last_name喜歡這個
SELECT
full_name || '_' || last_name AS obid
FROM
people;
但我不能對children_names我想像這樣選擇孩子的列做同樣的事情
select children_names
from people;
但我想在每個孩子的末尾添加 last_name 像這樣
{joe_han,joe1_han,joe2_han,joe3_han}
uj5u.com熱心網友回復:
使用標量子查詢:
SELECT
full_name||'_'||last_name obid,
(select array_agg(u||'_'||full_name) from unnest(children_names) u) children
FROM people;
然而,這將是很多更好地組織你的資料,@Barbaros?zhan建議。
uj5u.com熱心網友回復:
您應該使用unnest函式來提取資料,然后添加last_name列。合并資料后,您必須使用聚合來創建陣列。
演示
SELECT
full_name || '_' || last_name as obid,
array_agg(value || '_' || last_name)
FROM people CROSS JOIN unnest(children_names) value
GROUP BY 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395781.html
標籤:sql PostgreSQL的
上一篇:NestJSTypeORM同步,即使同步被顯式關閉(設定為false)
下一篇:基于列值轉換的視窗函式
