【发布时间】:2017-06-29 14:09:04
【问题描述】:
我一直在尝试在 MySQL 中对表进行透视(将行移动到列)。我了解 mysql 没有枢轴功能,所以我认为需要联合但不是 100% 确定。我有三列,user_id、option_id 和 question_id。我需要将所有 user_id 分组,并将所有 option_ids 放在一行中,其中 question_ids 作为列:
我有SELECT user_id, option_id, question_id FROM table,它给了我以下输出:
+----------+-------------+--------------+
| user_id | option_id | question id |
+----------+-------------+--------------+
| 101 | A1 | Q1 |
| 101 | A5 | Q2 |
| 102 | A2 | Q1 |
| 102 | A7 | Q2 |
+---------------------------------------+
我需要有以下输出:
+----------+-------------+--------------+
| user_id | Q1 | Q2 |
+----------+-------------+--------------+
| 101 | A1 | A5 |
| 102 | A2 | A7 |
+---------------------------------------+`
我尝试过使用case,但这只会给我第一行的 user_id 并且我得到其余列的“null”
提前感谢您的帮助。
【问题讨论】:
-
这里的端点是什么?因为这可以通过另一种方式完成,但如果你解释一下它最终需要做什么会很好。你将使用哪种编程语言来处理这个,
-
我在 PHP 中处理这个问题,该表本质上可能有数千个 question_id 和 answer_id 的组合,但 user_id 和 question_id 的组合永远只有一种。
-
我最初是在做一个通用的选择并在 PHP 中执行逻辑来组织表格,但是对于大量数据来说,对我的应用程序服务器的影响太大了。似乎如果我能找出一个 SQL 查询来实现这一点,那么我的数据库服务器就可以接受了
-
你的问题是你没有很好地组织你的项目。你必须以另一种方式来构建你的数据库并以正确的方式重写你的代码。你有一些文档吗?或者有什么地方可以让我更好地了解这个项目?
-
只是为了确认您需要问题形式作为范围的起点?所以基本上您可以拥有 Qn?
标签: mysql database pivot transpose