四时宝库

程序员的知识宝库

sql中left join表关联中on和where条件放置的区别

在 SQL 中,LEFT JOIN 是一种表连接操作,它可以用来连接两个表,同时保留左表中的所有行,即使在右表中没有匹配的行。ON 和 WHERE 子句都可以用于指定连接条件,但它们有一些关键的区别。

ON

  • 用于指定两个表之间的连接条件。
  • 在 LEFT JOIN 中,ON 子句中指定的条件用于匹配左表和右表中的行。
  • ON 子句的条件是连接条件,它决定了哪些行应该合并在一起。
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

WHERE

  • 用于对查询结果进行过滤,而不是用于指定连接条件。
  • 如果在 LEFT JOIN 后使用 WHERE 子句来过滤条件,它将影响整个结果集,包括左表和右表中的所有行。
  • 如果条件涉及到右表的列,并且在 WHERE 子句中使用,那么它会导致将 LEFT JOIN 变为内连接的效果,因为 WHERE 条件会过滤掉不满足条件的右表行,使其等效于 INNER JOIN。
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column
WHERE table2.another_column = 'some_value';

总的来说,ON 子句用于指定连接条件,而 WHERE 子句用于对整个结果集进行过滤。

LEFT JOIN 中,通常应该使用 ON 子句来指定连接条件,以确保左表的所有行都被保留,而不会由于过滤条件而丢失。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接