SQLite-如何编写正确的联接?

SQLite-如何编写正确的联接?,sqlite,Sqlite,我有两张桌子。第一个: create table history ( id integer primary key, task integer ) 第二点: create table task ( id integer primary key, name text ) 什么是SQLite查询,它将返回history.id和task.name的列表,其中history.task==task.id(来自'task'表且具有'name'的'history'表的所有项目)?请尝试以下操作: SELE

我有两张桌子。第一个:

create table history ( id integer primary key, task integer )
第二点:

create table task ( id integer primary key, name text )
什么是SQLite查询,它将返回history.id和task.name的列表,其中history.task==task.id(来自'task'表且具有'name'的'history'表的所有项目)?

请尝试以下操作:

SELECT history.id, task.name FROM history LEFT JOIN task ON history.task = task.id
请尝试以下操作:

SELECT history.id, task.name FROM history LEFT JOIN task ON history.task = task.id
如果不确定历史记录中某一行的任务是否存在,请使用左联接-如果该行丢失,将返回null

介绍了SELECT的语法(使用图片)

如果不确定历史记录中某一行的任务是否存在,请使用左联接-如果该行丢失,将返回null


SELECT的语法如下所述(使用图片)。

在我的例子中,内部联接和左联接有什么区别?左联接将显示所有历史ID,而不管行是否有匹配的任务。内部联接将仅显示两者都存在的位置。在我的例子中,内部联接和左联接之间有什么区别?左联接将显示所有历史ID,而不管该行是否有匹配的任务。内部联接只会显示两者都存在的位置。在我的例子中,内部联接和左联接有什么区别?如果您只希望返回既有历史记录又有任务的行,那么应该使用内部联接。如果您不介意返回具有历史记录但没有任务的行,则使用左联接。在我的情况下,内部联接和左联接之间有什么区别?如果您只希望返回同时具有历史记录和任务的行,则应使用内部联接。如果您不介意返回有历史记录但没有任务的行,那么使用左联接。