0
我有一個簡單的查詢是這樣的:SQL Server的限制與地方但至少包括一次
SELECT subs.id_number,
op.dtupdated as dtopened
FROM subscribers AS subs
LEFT OUTER JOIN messages AS msg
ON msg.id_number = subs.id_number
LEFT JOIN email_opens AS op
ON op.message_id = msg.message_id
WHERE op.dtupdated > dateadd(month,-3,CURRENT_TIMESTAMP)
基本上我試圖讓當電子郵件被打開(email_opens跟蹤表中的所有記錄),它通過id_number字段與用戶相關聯。我想在過去3個月內打開所有的電子郵件打開和關聯的id_number,但我也希望包含至少一次,在訂戶表中包含所有id號。
問題是我的where子句消除了過去3個月裏從來沒有任何公開郵件的所有記錄,但是我想包含一個帶有id_number和「NULL」的記錄,作爲未打開任何用戶的記錄。
我試過左外連接,工會(這工作,但後來我有重複),我只是不能似乎找出如何做到這一點。我確定必須有一個簡單的方法,我只是還沒有足夠的咖啡。
此查詢到永遠執行。如果我做一個簡單的查詢,如: '選擇 subs.id_number,op.dtupdated作爲dtopened 來自用戶的AS潛艇 LEFT OUTER JOIN 消息味精 ON msg.id_number = subs.id_number LEFT JOIN email_opens AS運算 ON op.message_id = msg.message_id WHERE op.dtupdated> DATEADD(月,-3,CURRENT_TIMESTAMP) UNION SELECT ID_NUMBER,NULL作爲dtopened FROM訂戶 ' 即只需要幾秒鐘的..問題是生病得到重複 – 2013-04-27 00:08:26