我对脚本和SQL非常陌生,并且继承了一些由联系人管理软件生成的疯狂数据库。我正在运行Microsoft SQL Server 2005.我想要做的是选择符合某些条件的行(最重要的是BIRTHDATE是今天的日期,这看起来可能是我的问题)。这里是我的代码:SQL查询'哪里'没有按我期望的那样工作
SELECT
TBL_CONTACT.BIRTHDATE,
TBL_CONTACT.COMPANYNAME,
TBL_CONTACT.CATEGORY,
CUST_ContactTable1_074000.CUST_DesignatedAgent_074203199,
TBL_EMAIL.ADDRESS
FROM
TBL_CONTACT,
CUST_ContactTable1_074000,
TBL_EMAIL
WHERE
TBL_CONTACT.BIRTHDATE >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) AND
TBL_CONTACT.BIRTHDATE < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1) AND
TBL_CONTACT.CATEGORY = 'Active' AND TBL_EMAIL.ADDRESS IS NOT NULL AND
CUST_ContactTable1_074000.CUST_DesignatedAgent_074203199 IS NOT NULL
的问题是,它是在我的数据库返回所有行(减去记录不符合NOT NULL和类别=“活动”的条件下,出现的话),即使有应该只有一行具有正确的TBL_CONTACT.BIRTHDATE。它将BIRTHDATE放在应该处理整个列表的唯一行中,即使这些行应该包含BIRTHDATE而不是今天的日期。如果我这样做没有今天匹配的BIRTHDATE,没有东西会返回(这是我所期望的)。
我在做什么错?请解释你的答案,因为我期待学习。谢谢!
格式和正确缩进查询。 – Lion 2012-01-10 09:01:15