SQL新手求助:如何查询关联表获取答案文本实现问答展示
解决方法:多次关联answers表获取所有答案文本
嗨,我来帮你搞定这个问题!你现在的SQL只关联了一次answers表,所以只能拿到正确答案的文本,另外三个选项的answer1_id、answer2_id、answer3_id还都是ID值对吧?要拿到这三个选项对应的文本,你需要多次关联同一个answers表,给每个关联起不同的别名就行啦。
具体SQL语句
SELECT q.questiontext, a1.answertext AS answer1_text, -- 第一个选项的文本 a2.answertext AS answer2_text, -- 第二个选项的文本 a3.answertext AS answer3_text, -- 第三个选项的文本 a_good.answertext AS correct_answer_text -- 正确答案的文本 FROM questions q -- 关联第一个选项的答案ID到answers表 JOIN answers a1 ON q.answer1_id = a1.id -- 关联第二个选项的答案ID到answers表 JOIN answers a2 ON q.answer2_id = a2.id -- 关联第三个选项的答案ID到answers表 JOIN answers a3 ON q.answer3_id = a3.id -- 关联正确答案的ID到answers表 JOIN answers a_good ON q.goodanswer = a_good.id;
为什么这么做?
你的questions表里的answer1_id、answer2_id、answer3_id、goodanswer都是指向answers表的id字段,每个ID都需要单独和answers表关联一次才能拿到对应的文本。用不同的别名(a1、a2、a3、a_good)可以区分开这几次关联,避免字段冲突。
如果你的数据库允许,也可以用LEFT JOIN代替JOIN,这样即使某个选项的ID为空(比如题目没填全三个选项),这条记录也能被查出来,不会被过滤掉。
内容的提问来源于stack exchange,提问作者PhiCato
相关产品推荐
相关产品推荐

