【发布时间】:2018-10-12 08:04:43
【问题描述】:
我正在研究 Transact-SQL,Microsoft Azure。
我试图理解为什么在某些连接查询中WHERE 和AND 都可以使用并给出相同的结果(或者至少在我的数据库中看起来是相同的结果)而在其他查询中where 没有t 工作并且确实。
在这里,我要加入 2 个表:
select c.customerID, ca.addressID, ca.addressType
from salesLT.customer as c
join salesLT.customerADdress as ca
on c.customerID = ca.customerID
WHERE ca.addressType = 'Main Office'; --WHERE or AND works the same
这给了我我正在寻找的内容 = 只有 customerAddress 表中类型为“Main Office”的行。将单词 WHERE 更改为 AND 会得到完全相同的结果。
现在,查询是基于以前的,但我正在尝试加入 3 个表。这里WHERE 不起作用,我必须输入AND:
select c.customerId, c.companyName, ca.addressID, ca.addressType, a.addressLine1, a. city
from salesLT.customer as c
join salesLT.customerAddress as ca
on c.customerID = ca.customerID
WHERE ca.addressType = 'Main Office' -- error: incorrect syntax near 'join'
join salesLT.address as a
on ca.addressId = a.addressID;
如果我将 WHERE 更改为 AND 它可以工作。为什么? 2个表和3个表的join有什么区别?
谢谢
【问题讨论】:
-
第二个
JOIN应该在WHERE子句之前 -
这就是为什么您应该在尝试编写/修改代码之前检查文档以了解该语言的语法,而不是仅仅在随机位置粘贴新位然后感到困惑。
-
@underscore_d 在随机位置粘贴新位被称为通过双手学习。如果这让您如此生气,则无需帮助其他人。
-
不错的尝试,但我不生气。我只是不明白为什么这么多人认为反复试验是一种很好的学习方式,或者至少是其他人应该支持他们的一种方式。
-
我什至不知道我为什么要费心回答,考虑到这些攻击性的 cmets 在这里很常见,但也许有人会从这次谈话中学到一些东西。你的问题的答案在于问题本身——你不明白为什么人们认为一种特定的方式是很好的学习方式。试着想象有些人的想法和学习方式与你不同,我知道这很难,但你可能会从你周围的人身上学到一些东西。再说一次,如果你不想支持,就不要……
标签: tsql join where-clause