可能重复:
Is it better to do an equi join in the from clause or where clause
我有两个SQL查询。你能解释一下这两者之间的区别吗?
QUERY:1
SELECT a.*, b.*
FROM Table1 a
INNER JOIN Table2 b
ON a.id = b.id
AND a.col = 'value'
QUERY:2
SELECT a.*, b.*
FROM Table1 a
INNER JOIN Table2 b
ON a.id = b.id
WHERE a.col = 'value'
由于
答案 0 :(得分:4)
无效
答案 1 :(得分:2)
对于INNER JOIN
,过滤JOIN
条件与WHERE
子句中的过滤应该会得到相同的结果。
如果这是OUTER JOIN
,则结果会有所不同,因为第一个结果会在JOIN
条件之前对源表中的结果进行预过滤。
答案 2 :(得分:1)
在这种特殊情况下它的结果是相同的,但它不是一回事。 WHERE适用于整个select,而ON ... AND仅适用于内连接(实际上可能是相同的,但不适用于外连接)
答案 3 :(得分:0)
是的,一切都差不多。如果您的ID字段拼写不正确,区分大小写的数据库将返回错误。
答案 4 :(得分:0)
区别在于纯粹的风格。就个人而言,我喜欢把执行表关键的子句连接到'JOIN ... ON a = b'部分下,并将与我的特定查询过滤有关的子句放在“WHERE”子句下。没有任何技术理由可以这样或那样做,只要你谈论内部联接。