sql – JOIN和WHERE中的过滤查询之间的区别?
在SQL中,我试图根据ID过滤结果,并想知道是否存在任何逻辑差异
SELECT value FROM table1 JOIN table2 ON table1.id = table2.id WHERE table1.id = 1 和 SELECT value FROM table1 JOIN table2 ON table1.id = table2.id AND table1.id = 1 对我来说,似乎逻辑是不同的,虽然你总是会得到相同的结果集,但我想知道是否有任何条件,你会得到两个不同的结果集(或者它们总是返回完全相同的两个结果集) 解决方法答案是没有区别的,但是:我会永远喜欢做以下事情。 >始终将Join条件保留在ON子句中 这使查询更易读。 所以我会用这个查询: SELECT value FROM table1 INNER JOIN table2 ON table1.id = table2.id WHERE table1.id = 1 然而,当您使用OUTER JOIN’S时,将过滤器保持在ON条件和Where条件方面有很大的区别。 逻辑查询处理 以下列表包含查询的一般形式,以及根据逻辑处理不同子句的顺序分配的步骤编号。 (5) SELECT (5-2) DISTINCT (5-3) TOP(<top_specification>) (5-1) <select_list> (1) FROM (1-J) <left_table> <join_type> JOIN <right_table> ON <on_predicate> | (1-A) <left_table> <apply_type> APPLY <right_table_expression> AS <alias> | (1-P) <left_table> PIVOT(<pivot_specification>) AS <alias> | (1-U) <left_table> UNPIVOT(<unpivot_specification>) AS <alias> (2) WHERE <where_predicate> (3) GROUP BY <group_by_specification> (4) HAVING <having_predicate> (6) ORDER BY <order_by_list>; 流程图逻辑查询处理 >(1)FROM:FROM阶段标识查询的源表和 从this excellent link起。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |