Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这两个SQL查询-SQL Server之间有什么区别_Sql_Sql Server_Sql Server 2005_Sql Server 2008_Tsql - Fatal编程技术网

这两个SQL查询-SQL Server之间有什么区别

这两个SQL查询-SQL Server之间有什么区别,sql,sql-server,sql-server-2005,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2005,Sql Server 2008,Tsql,可能重复: 我有以下两个SQL查询。你能给我解释一下这两者的区别吗 查询:1 SELECT a.*, b.* FROM Table1 a INNER JOIN Table2 b ON a.id = b.id AND a.col = 'value' 查询:2 SELECT a.*, b.* FROM Table1 a INNER JOIN Table2 b ON a.id = b.id WHERE a.col = 'value' 除非在数据库中为内部联接打开了区分大小写功能,否则什么都不用谢

可能重复:

我有以下两个SQL查询。你能给我解释一下这两者的区别吗

查询:1

SELECT a.*, b.*
FROM Table1 a
INNER JOIN Table2 b
ON a.id = b.id
AND a.col = 'value'
查询:2

SELECT a.*, b.*
FROM Table1 a
INNER JOIN Table2 b
ON a.id = b.id
WHERE a.col = 'value'

除非在数据库中为
内部联接打开了区分大小写功能,否则什么都不用谢,在
联接
条件下过滤与在
WHERE
子句中过滤应该得到相同的结果


如果这是一个
外部联接
,则结果会有所不同,因为第一个联接在
联接
条件之前预过滤源表中的结果。

是的,一切都差不多。如果您的ID字段拼写不正确,区分大小写的数据库将返回错误。

在这种情况下,结果是相同的,但不是相同的。
WHERE应用于整个select,而ON。。。而且只适用于内部连接(实际上可能是相同的,但不适用于外部连接)

差异纯粹是风格上的差异。就个人而言,我喜欢将执行表联接的关键子句放在“JOIN…”下。。。在a=b'部分,将与我的特定查询筛选相关的子句放在“WHERE”子句下。不过,没有任何技术上的理由以这种或那种方式进行操作,只要您讨论的是内部联接。

我正在查找和查找条件。我必须使用哪一个以及何时使用?这对
内部联接产生任何影响的唯一时间是,如果您使用的是
分组方式所有人
@MartinSmith很好地抓住了重复,我找不到一个