为什么这个查询甚至有效?

时间:2013-06-27 10:18:08

标签: sql-server-2008-r2

我注意到一个查询在我的代码中运行正常,但缺少where子句。
为什么它甚至可以工作,是一个错误还是一个特殊场景,规则的解释变得棘手?

SELECT
    C.Id
    , C.Name
    , C.Qualifying
    , CI.PlaceG
    , CI.PlaceN
    , CI.Hcp
    , CI.NewHcp
FROM dbo.Competitions AS C
INNER JOIN dbo.CompInscription AS CI ON (
    CI.idcomp = C.id
)
AND C.archived = 1
AND CI.idmembre = 11227
AND CI.placeg IS NOT NULL
AND CI.placen IS NOT NULL
AND CI.Status IN (0, 8)

1 个答案:

答案 0 :(得分:1)

正如NB指出的那样,这里发生的是你的条件被应用于JOIN而不是WHERE子句。

这个 是完全有效的SQL,但它看起来并不多,可能就是为什么它看起来很奇怪。如果将第一个AND替换为WHERE,则应得到相同的结果。