mysql - SQL 连接语法 : put data filter in "on clause" or "where clasuse"?

标签 mysql sql database

比如我有一个sql查询:

 select table1.*, table2.* from table1 
 left join table2 on table1.id=table2.id AND table2.someCol>123 (put it here)<p>
 where table2.someCol>123 (or put it here)

好像这两个位置都可以放过滤条件,而且是同一个意思吧?

最佳答案

不,这不一样。当您左/右加入时很重要。如果您在引用左连接表或右连接表的 where 子句中放置一个 where 条件,您基本上会将它变成一个内部连接。如果您添加 OR referenced_left_or_right_joined_column IS NULL,它将再次成为左连接或右连接。

关于mysql - SQL 连接语法 : put data filter in "on clause" or "where clasuse"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23222579/

相关文章:

mysql - 如何检查列值是否不为空,然后使用 sql 查询检查下一列

mysql - mysql中的多重选择结构

mysql - 统计sql中相同列的数量并将其输出为 View

mysql - 关联表而不扭曲数据

python - 如何检查相同的Python脚本是否在小型网络中的另一台计算机上运行?

sql - Oracle:以注释开头的查询对性能有影响吗?

java - 使用 php 或 java 打开 Edge 数据库连接

具有内置数据保留功能的数据库(可能是 noSQL)

mysql - 外键:简单查询不起作用

python - 如何在 ubuntu 上创建 mysql 数据库 - 用户 '' @'localhost' 访问被拒绝