如何在MySQL中执行此查询使用左连接、右连接或内部连接应该使用哪个?

如何在MySQL中执行此查询使用左连接、右连接或内部连接应该使用哪个?,mysql,sql,database,join,Mysql,Sql,Database,Join,我有三张这样结构的桌子。我希望有一个查询,结果是: 如果我做这个查询 table book: BookCode| AuthorShortN |Title ============================================ 101 | Anton B | THe Book of Leaves 102 | JJ. Abram | Wish Upon A Star 103 | Anonymous | Secret of Universe 104 | Anton B |

我有三张这样结构的桌子。我希望有一个查询,结果是:

如果我做这个查询

table book:
BookCode| AuthorShortN  |Title
============================================
101 | Anton B   | THe Book of Leaves
102 | JJ. Abram | Wish Upon A Star
103 | Anonymous | Secret of Universe
104 | Anton B   | The Sentinel


table author:
AuthorID|AuthorFullName   |Nationality
=====================================
A01 | Anton Balwin    | USA
J02 | Johannes J Abram| UK


table bookauthor:
BookCode|AuthorID
=================
101 | A01
102 | J02
103 | X01
104 | A01
它不会显示
第103行|匿名|宇宙秘密
,因为作者不在表Author中

我想要的是:

select * 
from book tb , author ta, bookauthor tba 
where tb.BookCode = tba.BookCode and tba.AuthorID = ta.AuthorID
如何修复查询以生成这样的结果

非常感谢您的帮助。

将给出左表中的所有结果,无论右表中是否有相应的条目

BookCode| Title         | AuthorID | AuthorShortN
===========================================================
101     | THe Book of Leaves|A01       | Anton Balwin    
102     | Wish Upon A Star  |J02       | Johannes J Abram
103     | Secret of Universe|NULL      | Anonymous
104     | The Sentinel  |A01       | Anton Balwin

另外,问题的主题之外-AuthorShortN字段不应该在author表中吗?

您正在查找允许空值的表上的左联接:

SELECT *
FROM book tb
LEFT JOIN author ta ON tb.BookCode = ta.AuthorID
LEFT JOIN bookauthor tba ON ta.AuthorID = tba.BookCode;

请注意,您的示例正确输出在AuthorShortN中查找空值,并且您的数据中实际上具有匿名性。BookAuthor的内部联接假定即使在作者未知的情况下,此表中也有条目,正如您的数据所示。

我很抱歉并感谢您指出的,这是一个打字错误,
103
的作者应该是
匿名的
而不是空的
内部联接
=
联接
。此表是正确的,因为关于作者更详细的信息将出现在
tbl author
中,而
tbl book
中只包含
简称
。无论如何,谢谢你调查此事。。
SELECT tb.BookCode, tb.Title, ta.AuthorID, tb.AuthorShortN 
FROM book AS tb
INNER JOIN bookauthor AS tba ON tba.BookCode=tb.BookCode
LEFT JOIN author AS ta ON tba.AuthorID=ta.AuthorID