or
あなたの一番上のクエリは、クエリのステートメントのために NULL を持つレコードの B のすべてのレコードへのデカルト結合になると確信しています。
それに基づいて、外部結合を使用する方がよいでしょう。
また、結合と、関心のある複数のテーブルからデータをプルする方法 ( SQL クエリが複数のテーブルからデータを返す方法) を見る長い Q&A も書きました。詳細に説明されているコードと出力結果がたくさんあります。(回答の長さの制限に達したので、2番目の回答を投稿する必要がありました)
編集:簡単なテストを実行した後、これが私が思いついたものです:
mysql> select a.ID, a.Title, b.Name as Author
from books a join authors b
on a.authorID=b.ID or b.id=0;
+----+----------------------+-------------------+
| ID | Title | Author |
+----+----------------------+-------------------+
| 1 | Call of the Wild | Fluffeh |
| 1 | Call of the Wild | Jack London |
| 2 | Martin Eden | Fluffeh |
| 2 | Martin Eden | Jack London |
| 3 | Old Goriot | Fluffeh |
| 3 | Old Goriot | Honore de Balzac |
| 4 | Cousin Bette | Fluffeh |
| 4 | Cousin Bette | Honore de Balzac |
| 5 | Jew Suess | Fluffeh |
| 5 | Jew Suess | Lion Feuchtwanger |
| 6 | Nana | Fluffeh |
| 6 | Nana | Emile Zola |
| 7 | The Belly of Paris | Fluffeh |
| 7 | The Belly of Paris | Emile Zola |
| 8 | In Cold blood | Fluffeh |
| 8 | In Cold blood | Truman Capote |
| 9 | Breakfast at Tiffany | Fluffeh |
| 9 | Breakfast at Tiffany | Truman Capote |
+----+----------------------+-------------------+
18 rows in set (0.00 sec)
mysql> select a.ID, a.Title, b.Name as Author
from books a right outer join authors b
on a.authorID=b.ID;
+------+----------------------+-------------------+
| ID | Title | Author |
+------+----------------------+-------------------+
| NULL | NULL | Fluffeh |
| 1 | Call of the Wild | Jack London |
| 2 | Martin Eden | Jack London |
| 3 | Old Goriot | Honore de Balzac |
| 4 | Cousin Bette | Honore de Balzac |
| 5 | Jew Suess | Lion Feuchtwanger |
| 6 | Nana | Emile Zola |
| 7 | The Belly of Paris | Emile Zola |
| 8 | In Cold blood | Truman Capote |
| 9 | Breakfast at Tiffany | Truman Capote |
+------+----------------------+-------------------+
10 rows in set (0.00 sec)
これは確かに外部結合と同じではありません。私が考えたように(少なくともMySQLでは)、最初のステートメントの結果はデカルトですが、外部結合ではありません。