Left Join / IS NULL如何消除一个表中存在而不是另一表中的记录?

奋斗的编码器

我很难理解为什么LEFT JOIN/要IS NULL消除一个表而不是另一个表中的记录。这是一个例子

SELECT  l.id, l.value
FROM    t_left l
LEFT JOIN t_right r
ON      r.value = l.value
WHERE   r.value IS NULL

为什么要r.value = NULL消除记录?我不理解 。我知道我缺少一些非常基本的东西,但目前我还无法弄清楚那个基本的东西。如果有人向我详细解释,我将不胜感激。

我想要一个非常基本的解释。

阿比克·查克拉博蒂(Abhik Chakraborty)

这可以用以下解释

mysql> select * from table1 ;
+------+------+
| id   | val  |
+------+------+
|    1 |   10 |
|    2 |   30 |
|    3 |   40 |
+------+------+
3 rows in set (0.00 sec)

mysql> select * from table2 ;
+------+------+
| id   | t1id |
+------+------+
|    1 |    1 |
|    2 |    2 |
+------+------+
2 rows in set (0.00 sec)

这里 table1.id <-> table2.t1id

现在,当我们left join使用连接键进行操作时,如果左边的表是table1,那么它将从table1获取所有数据,并且在table2的不匹配记录中将其设置为null

mysql> select t1.* , t2.t1id from table1 t1 
left join table2 t2 on t2.t1id = t1.id ;
+------+------+------+
| id   | val  | t1id |
+------+------+------+
|    1 |   10 |    1 |
|    2 |   30 |    2 |
|    3 |   40 | NULL |
+------+------+------+

3 rows in set (0.00 sec)

看到table1.id = 3在table2中没有值,因此将其设置为null当您应用where条件时,它将进行进一步的过滤

mysql> select t1.* , t2.t1id from table1 t1 
left join table2 t2 on t2.t1id = t1.id where t2.t1id is null;
+------+------+------+
| id   | val  | t1id |
+------+------+------+
|    3 |   40 | NULL |
+------+------+------+
1 row in set (0.00 sec)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在此LEFT JOIN上避免NULL记录

来自分类Dev

MySQL从多个表与LEFT JOIN多个

来自分类Dev

LEFT JOIN不会返回左侧表中的所有记录

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

Postgres中的LEFT JOIN查询

来自分类Dev

来自同一表的GROUP BY和LEFT JOIN(共COUNT个)

来自分类Dev

我将如何使用EQUI JOIN向我显示一个表中存在于另一表中的记录?

来自分类Dev

我可以使用LEFT OUTER JOIN和NULL,而不是一个表?

来自分类Dev

使用LEFT JOIN计数记录

来自分类Dev

LEFT JOIN表查找不匹配的行,同一表

来自分类Dev

关于第一个表的LEFT JOIN ON

来自分类Dev

Mysql Left join避免重复表

来自分类Dev

历史记录表中的SQL LEFT JOIN

来自分类Dev

MYSQL中的LEFT JOIN问题

来自分类Dev

LEFT JOIN查询未返回第一个表中的所有行

来自分类Dev

PHP在一个查询中显示来自四个表的数据(即:LEFT JOIN)

来自分类Dev

MySql LEFT JOIN从另一张表仅返回一个NULL行

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

右表中的LEFT JOIN缺失值

来自分类Dev

同一表中LEFT JOIN的速度-MySQL

来自分类Dev

2个表的LEFT JOIN查询失败

来自分类Dev

存在null时如何查询多个Left Join表

来自分类Dev

如何从LEFT JOIN MySQL表调用结果

来自分类Dev

SQL 中的 INNER JOIN 与 LEFT JOIN 性能

来自分类Dev

多个表中的多个 LEFT JOIN

来自分类Dev

在 sql LEFT JOIN 中只显示一个结果

来自分类Dev

从另一个表中检索数据信息 Left Join SQL

来自分类Dev

Laravel join 和 left join 在一个查询中

来自分类Dev

如何优化多个LEFT JOIN

Related 相关文章

热门标签

归档