表数据样本:
--------------------------
| key | domain | value |
--------------------------
| a | en | English |
| a | de | Germany |
返回我需要的结果的查询:
select * from
(
select t1.key,
(select value from TABLE where t1.key=key AND code='en') en,
(select value from TABLE where t1.key=key AND code='de') de
from TABLE t1
) as t2
从查询返回的数据:
---------------------------
| key | en | de |
---------------------------
| a | English | Germany |
我不想列出所有可用的域名:
(select value from TABLE where t1.key=key AND code='*') *
是否可以在Postgres中使此查询更具动态性:自动添加表中存在的所有域列?
答案 0 :(得分:0)
对于多个域,使用crosstab()
可以缩短查询速度。
完全动态查询,无法根据表中的数据返回动态数量的列,因为SQL是严格键入的。无论你尝试什么,你最终都需要两个步骤。第1步:生成查询,第2步:执行它。
或者您返回的内容更灵活,而不是表格列,如数组或文档类型,如json
。详细说明: