真的希望有人可以帮忙解决这个问题。我确信有更好的方法来构建我的数据,但由于时间限制,如果可能的话,最好有一个解决当前结构的方法。
我有2个具有以下结构的表:
表1
id field1
1 quest1
2 quest2
3 quest3
表2
id uid quest1 quest2 quest3
1 18 yes no yes
2 27 yes no no
基本上,我需要使用以下格式的表2(基于uid)返回表1:
id field1 field2
1 quest1 yes
2 quest2 no
3 quest3 yes
这有可能吗?在线查看我不断遇到数据透视表和交叉表查询,但他们似乎无法实现我所追求的目标......除非我错了? (我可能是大声笑)。
感谢任何人可以为此提供任何帮助。
马特
答案 0 :(得分:2)
MySQL不支持数据透视表/交叉表查询。
它有时会受到批评,但辩护是它是一个功能,而不是缺陷:-) Pivot查询更多地属于表示层,因为它们创建的不是数据库意义上的表。因此,它们更多地属于从数据库中提取数据的应用层。
答案 1 :(得分:1)
SELECT t1.*, CASE t1.field1
WHEN 'quest1' THEN t2.quest1
WHEN 'quest2' THEN t2.quest2
WHEN 'quest3' THEN t2.quest3
END AS field2
FROM t1, t2
WHERE t2.uid = 18;
在sqlfiddle上查看。
答案 2 :(得分:0)
select t1.id, t2.field1, t2.field2
from table1 t1
inner join (
select id, 'quest1' as field1, quest1 as field2 from table2
union all
select id, 'quest2' as field1, quest2 as field2 from table2
union all
select id, 'quest3' as field1, quest3 as field2 from table2
) t2u on t1.id = t2.id
where t2.uid = 18