SQL中使用JOIN时,过滤条件的位置

sql语句

(SELECT * FROM t1 WHERE {subquery_where_condition}) a
JOIN
(SELECT * FROM t2 WHERE {subquery_where_condition}) b
ON {on_condition}
WHERE {where_condition};

计算顺序

  1. 子查询中的where子句,即
  2. JOIN子句中的关联条件,即
  3. JOIN结果集中的where子句,即

过滤条件位置

  • inner join
    左右表的过滤条件不受限制
  • left join
    左表过滤条件放在{subquery_where_condition}或{where_condition}中,右表过滤条件放在{subquery_where_condition}或{on_condition}中
  • right join
    右表的过滤条件放在{subquery_where_condition}或{where_condition}中,左表过滤条件放在{subquery_where_condition}或
  • full outer join
    过滤条件只能放在{subquery_where_condition}中

推荐做法

将每个表的单表过滤条件单独写成子查询。

posted @   jsqup  阅读(193)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示