Postgresql 如何连接表中的两个JSONB列?
我想问一下如何在一个表中连接两个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
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