Mysql数据库之SELECT的用法

 

 

 

 

-----------以下为解释说明---------------

方法1中红色的WHERE不能改成AND(这个问题本质上是将过滤条件放在ON和WHERE是否一致的问题)
当我们使用关联操作时,关联两张表或多张表来返回记录时,数据库就会生成一张临时表,最后将这张临时表返回给用户。以LEFT JOIN为例:在使用LEFT JOIN时,ON和WHERE的过滤条件的区别如下:
ON条件是在生成临时表时使用的条件,它不管ON中的条件是否为真,都会返回左边表中的记录
WHERE条件是在临时表已经生成后,对临时表进行的过滤条件。如果WHERE条件不为真的记录就会被过滤掉。
由于LEFT JOIN(以及RIGHT JOIN,FULL JOIN)的特殊性,不管ON条件是否为真,数据库都会返回左侧(或右侧、左右两侧)表中的全部记录。由于INNER JOIN没有这样的特殊性,所以过滤条件放在ON中或WHERE中,其返回的结果是一样的。
这是使用的是LEFT JOIN,而s.to_date=‘9999-01-01’是连接表之后需要进行的过滤条件,所以必须放在WHERE里面。

在使用多表查询时,需要通过外联接(左/右/全:保留关联和非关联的数据,无对应数据以NULL显示)和内联接(INNER JOIN:只保留关联的数据,不关联的数据过滤掉),且联结表时,需要填写查询的条件,例如:select 表1.字段, 表2.字段

参考资料:SQL中的ON和WHERE的区别:https://blog.csdn.net/liitdar/article/details/80817957

posted @ 2021-10-18 23:19  学不思饿  阅读(515)  评论(0)    收藏  举报