Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询以连接具有相似数据的两个表_Mysql - Fatal编程技术网

MySQL查询以连接具有相似数据的两个表

MySQL查询以连接具有相似数据的两个表,mysql,Mysql,我有一个MySQL表,如下所示: questionID, question, optionID, optionText answeredOptionID '1', 'question1', 100, 'option1', '100' '2', 'question2', 200, 'option2', '200' '3', 'question3', 300, 'option3', Null '3',

我有一个MySQL表,如下所示:

questionID, question, optionID, optionText answeredOptionID
   '1',    'question1', 100,   'option1',        '100'
   '2',    'question2', 200,   'option2',        '200'
   '3',    'question3', 300,   'option3',         Null
   '3',    'question3', 400,   'option4',        '400'
   '3',    'question3', 500,   'option5',         Null
   '4',    'question4', 600,   'option6'         '600'
问题(见附表)

questionID, question, optionID, optionText
   '1',    'question1', 100,   'option1',
   '2',    'question2', 200,   'option2',
   '3',    'question3', 300,   'option3',
   '3',    'question3', 400,   'option4',
   '3',    'question3', 500,   'option5',
   '4',    'question4', 600,   'option6'
答案(附表)

questionID answeredOptionID
   '1'      '100'      
   '2'      '200'
   '3'      '400'
   '4'      '600'
我需要像这样连接这两个表:

questionID, question, optionID, optionText answeredOptionID
   '1',    'question1', 100,   'option1',        '100'
   '2',    'question2', 200,   'option2',        '200'
   '3',    'question3', 300,   'option3',         Null
   '3',    'question3', 400,   'option4',        '400'
   '3',    'question3', 500,   'option5',         Null
   '4',    'question4', 600,   'option6'         '600'

请帮我查询一下。简单连接或左、右连接不起作用-我会在需要的地方得到重复的答案,而不是空的答案

你应该在questionID和optionID上使用左连接

select a.questionID, a.question, a.optionID, a.optionText, b.answeredOptionID 
from questions_table a 
left join  answers_table b on a.questionID = b.questionID 
         and a.optionID = b.answeredOptionID 
ORDER BY questTbl.optionID
是否检查

select a.questionID, a.question, a.optionID, a.optionText, 
 case when b.answeredOptionID is not null then'Checked' ELSE 'Not checked' END result 
from questions_table a 
left join  answers_table b on a.questionID = b.questionID 
         and a.optionID = b.answeredOptionID 
ORDER BY questTbl.optionID

您的问题的解决方案:

SELECT questTbl.questionID, questTbl.question, questTbl.optionID,
questTbl.optionText, ansTbl.answeredOptionID 
FROM questions_table questTbl 
LEFT JOIN answers_table ansTbl 
ON questTbl.questionID = ansTbl.questionID
AND questTbl.optionID= ansTbl.answeredOptionID
ORDER BY questTbl.optionID
有关演示,请点击以下链接:


选中-

左连接应该是您尝试的查询的右路标。谢谢,此答案看起来与上一个几乎相同,只是没有“order by”命令,因此我将上一个标记为右连接。不管怎样,你知道如何把一些文本而不是结果放进去吗?在这种情况下,如果answeredOptionID不为null,则为“选中”,如果不是,则为“未选中”?@ArturTakoev。。。奇怪的正确答案张贴至少一个小时之前,其他人没有被检查为接受订单。。无论如何增加订单。并为之管理。答案选项D也添加了。。哦,很抱歉,没有确切的发帖时间,我想列表中较低的是较晚的。我检查了你的答案是否正确。查询中提供了答案选项ID中的副本