【发布时间】:2023-03-27 19:07:01
【问题描述】:
我有一个包含许多列的“响应”表,其中一些列采用与另一个“答案”表相对应的整数值。这是响应表:
表响应:
name | answer1 | answer2 | answer3
----------------------------------
james foo | 1 | 2 | 3
表格答案_参考:
id | answer
------------
1 | Yes
2 | No
3 | Maybe
所以我希望能够从 james foo 那里得到答案,结果应该是
name | answer1 | answer2 | answer3
----------------------------------
james foo | Yes | No | Maybe
这是我尝试过的查询:
select t1.name, al.answer, al2.answer FROM response t1 LEFT JOIN answers_ref al ON t1.answer1 = al.id LEFT JOIN answers_ref al2 ON t1.answer2 = al2.id;
上述方法可以获得 2 个答案,但我必须进行第三次连接才能获得 answer3,但是如果我有 10 个答案/列怎么办?
【问题讨论】:
-
你需要 10 个连接,除非你改变表的设计。
-
如果答案列不固定,请使用数据透视表。
-
在我看来,它的数据库设计非常糟糕。如果还不算太晚,您现在应该更改它。
-
您可以通过检查我的查询来了解其中表使用单次和多行值转换为多列的情况。请查看stackoverflow.com/questions/69268254/…
-
什么 MySQL 版本?
标签: mysql