gpt4 book ai didi

sql - 如何将 PostgreSQL 行扩展为多行以更新 "custom fields"?

转载 作者:行者123 更新时间:2023-11-29 13:38:10 25 4
gpt4 key购买 nike

我有一个第 3 方软件(比如 user_fields)使用的表,其中每一行都有一个 user_id、一个 field_id 和一个 field_value。我知道很糟糕。

我还有另一个我自己的用户表,users,它包含填充它所需的值,除了 field_id 是“神奇的”并且对应于自定义字段映射。

我如何编写一个选择查询来实现这一点:

user_id | company_name       | first_name | country
---------------------------------------------------
1 | Nutty Choc Company | Si | GB
2 | Ljubljanske R Us | Pie | IT

进入这个?

user_id | field_value        | field_id
---------------------------------------
1 | Nutty Choc Company | 10
1 | Si | 11
1 | GB | 12
2 | Ljubljanske R Us | 10
2 | Pie | 11
2 | IT | 12

我正在使用 Postgresql 8.4,并打算将查询提供给插入。

我尝试过使用 unnest 和一个数组,将字段扩展为行,但它在处理完选择中的任何其他字段后取消嵌套,因此只是复制未嵌套行的值。

有什么想法吗?

干杯,硅

编辑:格式和澄清狡猾的名称值表是第 3 方。

最佳答案

我将其添加为一个单独的答案,因为它与我发布的其他答案完全不同。你可以尝试这样的事情:

SELECT
U.id,
UF.id AS field_id,
CASE UF.id
WHEN 10 THEN U.first_name
WHEN 11 THEN U.country
WHEN 12 THEN U.company_name
ELSE NULL
END AS field_value
FROM
Users U
CROSS JOIN User_Fields UF

这是假设您有一个 User_Fields 表(或任何可能命名的表),它为您提供了所有可能的用户字段。不过,您必须使您的 CASE 语句保持最新。

关于sql - 如何将 PostgreSQL 行扩展为多行以更新 "custom fields"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com