我必须使用名为" QUIZ"的MySQL表。和" CHAPTER"如下图所示
测验
qid | quizname | chapterid
=========================
1 | quiz1 | 0
-------------------------
2 | quiz3 | 1
-------------------------
3 | quiz3 | 2
-------------------------
章:
chapterid | chaptername
=========================
1 | chpter1
-------------------------
2 | chpter2
-------------------------
3 | chpter3
-------------------------
现在我想从QUIZ表中获取测验的详细信息,其中quizid = 1 。 我的SQL查询是
"SELECT quiz.qid, quiz.quizname, chapter.chaptername from quiz, chapter
where quiz.chapterid=chapter.chapterid and quiz.qid=1"
但我没有结果。 那么请解释一下可能会出现什么问题?
答案 0 :(得分:2)
您可以看到章节表中没有章节0,这就是查询不返回任何内容的原因(理所当然)。 如果你确实希望它从测验表中返回测验名,即使章节id无效,那么你应该使用左外连接。像这样:
SELECT quiz.qid, quiz.quizname, chapter.chaptername
from quiz
left outer join chapter On quiz.chapterid=chapter.chapterid
Where quiz.qid=1
显然,返回的chaptername将为null。 (注意:我把上面的代码展示给你左外连接的想法。查看我可能忽略的任何特定于MySql的语法)。
答案 1 :(得分:0)
因为与qid = 1关联的chapterId为0,与另一个表中的任何其他行不匹配,因此您的查询将返回空记录 所以你最好将AND更改为OR并尝试运行
"SELECT quiz.qid, quiz.quizname, chapter.chaptername from quiz, chapter
where quiz.chapterid=chapter.chapterid OR quiz.qid=1"
加入
select quiz.qid,quiz.quizname,chapter.chaptername from quiz left outer join chapter On quiz.chapterid = chapter.chapterid