Postgresql 如何连接表中的两个JSONB列?

Postgresql 如何连接表中的两个JSONB列?,postgresql,Postgresql,我想问一下如何在一个表中连接两个JSONB列。我目前正在阅读如何使用横向连接,但似乎无法使其工作 我的表架构: CREATE TABLE IF NOT EXISTS quiz( id SERIAL PRIMARY KEY, questions JSONB, answers JSONB ); INSERT INTO quiz(questions, answers) VALUES ('{"Q1": "Question 1", &quo

我想问一下如何在一个表中连接两个JSONB列。我目前正在阅读如何使用横向连接,但似乎无法使其工作

我的表架构:

CREATE TABLE IF NOT EXISTS quiz(
    id SERIAL PRIMARY KEY,
    questions JSONB,
    answers JSONB
);

INSERT INTO quiz(questions, answers)
VALUES
('{"Q1": "Question 1",
"Q2": "Question 2",
"Q3": "Questiuon 3"}',


'{"Q1": "Answer 1",
"Q2": "Answer 2",
"Q3": "Answer 3"}');
预期产出:

------------ +-----------
| questions  |  answers |
-------------------------
| Question 1 | Answer 1 |
| Question 2 | Answer 2 |
| Question 3 | Answer 3 |
-------------+-----------

谢谢大家!

您可以使用
jsonb_each_text()
分别展开两个JSON列,它返回两列(
key
value
),然后连接结果:

SELECT
    q.value as question,
    a.value as answer
FROM (
    SELECT
        questions.key,
        questions.value
    FROM quiz,
        jsonb_each_text(questions) as questions
) q 
JOIN (
    SELECT
        answers.key,
        answers.value
    FROM quiz,
        jsonb_each_text(answers) as answers
) a ON a.key = q.key

假设在
问题
答案
中始终有相同的键,则可以执行以下操作:

从一列中检索
,并使用它们从两列中提取值

SELECT
    questions ->> key,
    answers ->> key
FROM quiz,
    jsonb_object_keys(questions) as key