
SQL LEFT INNER JOIN简介
SQL LEFT INNER JOIN是一种连接类型,可以用来检索左表的所有记录,也就是放在from子句后面的表名和其中所有匹配的左、右连接的记录。当我们必须通过合并两个或多个表的记录来找出数据时,就会使用连接。左内联接是专门用于有条件的情况下,无论右表是否有匹配的记录,左表的所有记录都应该被检索到。
左表是在from子句后面指定的表,而在应用任何连接时,名字放在连接关键字后面的表被认为是我们的右表。如果在右表中有匹配的记录,那么它的内容也会被检索出来,如果没有找到这样的匹配记录,那么对于从右表中检索出来的那些列,会检索出一个NULL值。
SQL LEFT INNER JOIN的语法
下面给出了LEFT INNER JOIN的语法。
SELECT table name1.column name1,table name1.column name2,table name2.column name1,....
FROM table name1
LEFT JOIN table name2
ON table name1.matching_column name = table name2.matching_column name;
在左内联中指定INNER关键字是可选的,因为默认情况下,左联被认为是SQL中的左内联。因此,表名1是我们的左表名,表名2是我们左内联的右表名。由于我们必须检索两个表的结果集,那么两个表的列名就会被检索出来,如上面的语法所示;列记录的检索方式是指定表的名称,然后是要检索其值的列的名称,用点的帮助将它们分开。
所有要检索的列值之间都用逗号隔开。此外,在语法的ON子句中提到了要从两个表中找到匹配记录的列。
SQL LEFT INNER JOIN的例子
让我们考虑一下我的教育数据库中现有的两个表,名为educba_experts,存储所有专家的记录和他们的详细信息。另一个名为educba_articles的表存储了分配给专家的文章的细节和他们的状态。为了查看这两个表的结构和内容,我们将使用以下查询语句。
代码。
SELECT * FROM `educba_experts`;
输出:

代码:
SELECT * FROM `educba_articles`;
输出:

现在,我们必须从专家表中检索所有记录,然后检索分配给这些专家的文章数量。与专家相关的详细信息可以从educba_experts表中检索出来,而文章的数量,如果存在于专家身上,可以通过对educba_articles表进行连接来检索。在这种情况下,由于我们必须检索专家的记录,无论是否有任何文章分配给他/她,我们必须使用左内联。
代码:
SELECT
a.expert_name AS "Name of expert",
DATE(a.joining_date_time) AS "joining date",
a.rate AS "rate of expert",
COUNT(b.id) AS "article count"
FROM
`educba_experts` a
LEFT JOIN `educba_articles` b
ON a.id = b.expert_id
GROUP BY a.id;
输出:

我们可以看到,所有专家的详细信息都被检索出来了,比如专家的名字,他/她的加入日期,专家的比率,以及来自表educba_articles的总文章数。由于在表educba_articles中没有找到parineeta gujrati和Omprakash Lalwani这两位专家的extry,所以为他们检索了NULL值,而NULL的计数为0,为那些在educba_articles中没有记录的专家检索了0值。由于我们必须根据专家的ID对文章计数进行分组,所以我们根据别名 "a "的ID列对结果集进行分组,而 "a "是educba_experts的别名。
让我们再借助一个例子来理解左内联的实现,即考虑两个表。首先,考虑两个现有的表,名为Articles和UpdateArticles,其内容和结构如下面查询语句的输出所示。
代码:
SELECT * FROM Articles;
输出:

代码:
SELECT * FROM UpdatedArticles;
输出:

现在,我们必须检索更新文章表的所有记录,无论是否在文章表中找到匹配的记录。
代码。
SELECT
a.articleid,a.articletopic , b.articletopic,b.rate
FROM
`UpdatedArticles` a
LEFT JOIN `Articles` b
ON a.articleid = b.articleid ;
执行上述查询语句给出的输出如下所示,包含空值,在文章表中没有找到匹配的条目。
输出。

结论
我们可以利用LEFT INNER JOIN,只需在语法中指定左键即可。它有助于检索左表的所有记录,无论在右表中是否找到与之匹配的记录。如果没有找到匹配的记录,右表的列值将被检索为NULL值。