我有一个问答,下面是我的表格结构
从待测问题中选择*;
q_id | que | opt1 | opt2 | opt3 | opt4 | ans
------------------------------------------------------------------
1 | what is this? | cat | dog | owl | cow | opt2
2 | what is that? | man | pig | bat | rat | opt4
3 | who is this? | ice | flea | dirt | lion | opt1
4 | who is that? | goat | meat | kid | gin | opt3
从tbl_用户答案中选择*
uid | qid | submit_ans | correct_ans
-------------------------------------------------
1 | 1 | opt2 | opt2
1 | 2 | opt3 | opt4
1 | 3 | opt4 | opt1
1 | 4 | opt1 | opt3
我希望我的结果是这样的。
qid | submit_ans | submittext | correct_ans | correcttext
-------------------------------------------------------------
1 | opt2 | dog | opt2 | dog
2 | opt3 | bat | opt4 | rat
3 | opt4 | lion | opt1 | ice
4 | opt1 | goat | opt3 | kid
我想不出任何办法让它看起来像这样。我从来没有做过旋转。有什么查询可以让我得到结果吗?
最佳答案
您需要像这样连接表和用例表达式:
select
q.q_id qid, u.submit_ans submit_ans,
case u.submit_ans
when 'opt1' then q.opt1
when 'opt2' then q.opt2
when 'opt3' then q.opt3
when 'opt4' then q.opt4
end submit_text,
u.correct_ans,
case u.correct_ans
when 'opt1' then q.opt1
when 'opt2' then q.opt2
when 'opt3' then q.opt3
when 'opt4' then q.opt4
end correcttext
from tbl_test_question q inner join tbl_user_answer u
on u.qid = q.q_id
请参见demo。
结果:
> qid | submit_ans | submit_text | correct_ans | correcttext
> --: | :--------- | :---------- | :---------- | :----------
> 1 | opt2 | dog | opt2 | dog
> 2 | opt3 | bat | opt4 | rat
> 3 | opt4 | lion | opt1 | ice
> 4 | opt1 | goat | opt3 | kid
关于mysql - 枢轴表水平到垂直两个表之间的MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58748467/