gpt4 book ai didi

sql - 具有相同属性的 "list"的转置表

转载 作者:行者123 更新时间:2023-11-29 12:22:20 26 4
gpt4 key购买 nike

是否可以转置具有重复列的表格?

现有表:

user_id    question_id   body 
1 1 'Text1 1'
1 1 'Text1 1-2'
1 2 'Text1 2'
1 3 'Text1 3'
2 1 'Text2 1'
2 2 'Text2 2'

基于交叉表或解决方案

MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS 'question1'

不适用于这种情况,因为总是匹配重复属性的最后一次出现。

我想对问题主体进行搜索,但如果没有转置表,我不知道如何。
例如。我想在 question1='...' AND question2='...'

中找到 user_id

最佳答案

这是一个关系 split 的案例。获得所需内容的两个示例查询技术:

SELECT user_id
FROM tbl
WHERE question_id = 1
AND body = 'Text1 1'

INTERSECT
SELECT user_id
FROM tbl
WHERE question_id = 2
AND body = 'Text1 2';

或者:

SELECT t1.user_id
FROM tbl t1
JOIN tbl t2 USING (user_id)
WHERE t1.question_id = 1
AND t1.body = 'Text1 1'
AND t2.question_id = 2
AND t2.body = 'Text1 2';

-> sqlfiddle demo

在这个相关问题下找到更多:
How to filter SQL results in a has-many-through relation

crosstab() 来自附加模块 tablefunc只是一种以修改的方式显示您的数据的方法。但是您正在寻找一种查询技术。这不是显示问题。
您也可以在 SO 上找到许多关于 crosstab() 的示例,使用 a search like this one .

关于sql - 具有相同属性的 "list"的转置表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952989/

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