编辑:我现在意识到我犯了一个愚蠢的错误。在这里清晨,我还没有喝咖啡,不要为这个愚蠢的问题狠狠地鞭打我。如果可以,我会删除它。 主要的脸部时刻家伙。我现在会沉默地走开。
如果我将查询的搜索约束放在Select子句中,如下所示:
select
ra.TRADE_FIRM, ra.TRADE_OFFICE, ra.TRADE_REP, c.FIRST_NAME, c.MIDDLE_NAME, c.LAST_NAME,
c.SUFFIX, ca.ADDRESS_LINE_1, ca.ADDRESS_LINE_2, ca.CITY, ca.STATE_PROVINCE, c.EMAIL_ADDRESS,
c.BUSINESS_PHONE, c.BUSINESS_PHONE_2, rp.CHANNEL, rp.TERR1, rp.TERR1_LOCKED,
rp.TERR2, rp.CRD_NUMBER, PRIMARY_YN = 'y', RECORD_TYPE = 'I' --here are my constraints
from dbo.CONTACT c
inner join dbo.CONTACT_ADDRESS ca on ca.CONTACT_ADDRESS_ID = c.ADDRESS_1_ID
inner join dbo.REP_PROFILE rp on rp.CONTACT_ID = c.CONTACT_ID
inner join dbo.REP_ALIAS ra on ra.CONTACT_ID = c.CONTACT_ID
它在逻辑上等同于将它们放在Were子句中,如下所示:
select
ra.TRADE_FIRM, ra.TRADE_OFFICE, ra.TRADE_REP, c.FIRST_NAME, c.MIDDLE_NAME, c.LAST_NAME,
c.SUFFIX, ca.ADDRESS_LINE_1, ca.ADDRESS_LINE_2, ca.CITY, ca.STATE_PROVINCE, c.EMAIL_ADDRESS,
c.BUSINESS_PHONE, c.BUSINESS_PHONE_2, rp.CHANNEL, rp.TERR1, rp.TERR1_LOCKED,
rp.TERR2, rp.CRD_NUMBER
from dbo.CONTACT c
inner join dbo.CONTACT_ADDRESS ca on ca.CONTACT_ADDRESS_ID = c.ADDRESS_1_ID
inner join dbo.REP_PROFILE rp on rp.CONTACT_ID = c.CONTACT_ID
inner join dbo.REP_ALIAS ra on ra.CONTACT_ID = c.CONTACT_ID
where
PRIMARY_YN = 'y' and
RECORD_TYPE = 'I'
我问,因为乍一看,我认为这两个选项是等价的,并且会产生相同的结果。但是每个查询返回的记录总数是不同的,这就是我要问的原因。
答案 0 :(得分:2)
不,您在SELECT
语句中所做的只是一个动态列,其中包含您提供的值,因此对于每条记录,PRIMARY_YN
始终是' y'即使表中的值不同。
您可以过滤查询的唯一位置是WHERE
子句或JOIN
条件。