如何在不使用UNION的情况下在Postgresql中取消删除?我有超过100列,我正在寻找一种巧妙的方法。
给出表:
id c1 c2 c3
1 X Y Z
2 A B C
3 Y C Z
所需的表格:
id col
1 X
1 Y
1 Z
2 A
2 B
2 C
3 Y
3 C
3 Z
答案 0 :(得分:3)
select id, value as col
from my_table,
jsonb_each_text(to_jsonb(my_table))
where key <> 'id';
id | value
----+-------
1 | X
1 | Y
1 | Z
2 | A
2 | B
2 | C
3 | Y
3 | C
3 | Z
(9 rows)
在Postgres 9.3和9.4中使用to_json()
和json_each_text()
。
在版本9.1或9.2中安装hstore:
create extension if not exists hstore;
select id, value
from (
select id, (each(hstore(my_table))).key, (each(hstore(my_table))).value
from my_table
) s
where key <> 'id';