我必须使用MySQL名为“QUIZ”和“CHAPTER”的表,如下所示
测验

qid | quizname | chapterid
=========================
1   | quiz1    |     0
-------------------------
2   | quiz3    |     1
-------------------------
3   | quiz3    |     2
-------------------------

章节:
chapterid | chaptername
=========================
1         | chpter1
-------------------------
2         | chpter2
-------------------------
3         | chpter3
-------------------------

现在我想从测验表中得到测验的细节,其中quizid=1。
我的sql查询是
"SELECT quiz.qid, quiz.quizname, chapter.chaptername from quiz, chapter
 where quiz.chapterid=chapter.chapterid and quiz.qid=1"

但我没有结果。
所以请告诉我有什么问题吗?

最佳答案

您可以看到chapterd0不在Chapter表中,这就是为什么查询不返回任何内容(这是正确的)。
如果您确实希望它从测试表返回quizname,即使章节id无效,也应该使用左外部联接。这样地:

SELECT quiz.qid, quiz.quizname, chapter.chaptername
from quiz
left outer join chapter On quiz.chapterid=chapter.chapterid
Where quiz.qid=1

显然,返回的chaptername将为空。(注意:我把上面的代码展示给你看左外连接的想法。查看我可能忽略的任何MySql特定语法。

10-04 11:14