我對腳本和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