我有
表:文章
ID | CONTENT
---------------
1 | the quick
2 | brown fox
3 | jumps over
4 | the lazy
表:作者
ID | NAME
----------
1 | paul
2 | mike
3 | andy
表:文章作者
ARTICLE_ID | WRITER_ID
-----------------------
1 | 1
2 | 2
3 | 3
总而言之,第4条没有作者。
所以当我“搜索”带有“the”的文章时:
SELECT a.id, a.content, w.name
FROM articles a, writers w, articles_to_writers atw
WHERE a.id=atw.article_id AND w.id=atw.writer_id AND content LIKE '%the%'
第4条未出现在结果中:
ID | CONTENT | NAME
-----------------------
1 | the quick | paul
如何使第4条即使没有作者也仍然出现在结果中?
最佳答案
请尝试以下查询:
SELECT a.id, a.content, w.name
FROM articles a LEFT JOIN articles_to_writers atw ON a.id = atw.article_id
LEFT JOIN writers w ON w.id=atw.writer_id
WHERE a.content LIKE '%the%'
原始查询使用旧的SQL语法在所有表之间创建隐式内部联接。内部联接要求联接的每个表中都有匹配的记录。
在上面修改过的查询中,使用左外联接“附加”表。这将允许连接左侧的记录出现在最终结果集中,即使writer中没有匹配的行。writer中的列对于这些“额外”行将具有空值。